struts 2 s:日期标记,其中包含请求中变量的值,请求中包含它的名称

时间:2012-08-22 06:42:50

标签: date struts2 tags

我的网络应用中存在struts 2和日期值的问题。我有一个表单,里面有一个显示日期值的s:textfield。我从请求中读取了这个值,问题是该值的名称是在其他变量中。

行动我正在打电话:

...   
public String execute(){ return SUCCESS;}

public MyObject getObject1(){   
  MyObject result = new MyObject();  
  result.setDate(new java.util.Date());  
  return result;  
}  
...

成功后,它会转到我的表格。

my form 中的代码(我想写的是):

<s:form action="save">
  <s:set name="objName" value="object1"></s:set>  
  <jsp:include page="../includedform.jsp"></jsp:include>  
</s:form>

“includedform.jsp”中有:

<s:textfield name="%{objName}.date" label="Date" >  
  <s:param name="value">  
    <s:date name="%{%{objName}.date}" format="dd/MM/yyyy" />  
  </s:param>  
</s:textfield>

语法: %{%{objName}.anagrafica.dataNascita}
不起作用(显然没有显示)。 所以我需要这样的东西,但工作:)

其他标签s:“includedform.jsp”中的文本字段(为简单起见,在下面的代码中省略)没有日期字段,因为我只使用name属性,struts会自动查找该值。这是我用于这些文本字段的代码:

<s:textfield name="%{objName}.name" label="Name"/>

2 个答案:

答案 0 :(得分:1)

您的问题非常混乱,您需要重新措辞,以使其更清晰,更易读。 我不确定你为什么要这样做

<s:textfield name="%{objName}.date" label="Date" >

虽然这可以像

那样完成
<s:textfield name="objName.date" label="Date" > OR 
<s:textfield name="%{objName.date}" label="Date" >

当你写objName.date时OGNL假设你的动作类中有一个bean,即objName,而这个bean有date属性,最终这将被转换为

ONGL

getObjName().getDate()

在类似的时尚<s:date name="%{%{objName}.date}" format="dd/MM/yyyy" />日期标签上有效 有关详细信息,请参阅官方文档

答案 1 :(得分:0)

有一种解决方案,我尝试过它有效:) 1)仅在“DATE”数据类型中将要存储日期的列保存在数据库表中  2)在JSP页面中仅使用Textfield标签。不要使用Date标签。 注意:请确保仅通过在文本字段标记中放置占位符来使用户输入日期为YYYY-MM-DD格式!
3)保留变量以仅访问字符串类型的字段。不要使用DATE数据类型 4)现在运行查询:从表名中选择DATE_FORMAT(datecolumnname,'%d /%m%/ Y')作为date_two; ,即使是dd / mm / yyyy格式,您也可以从该列获取日期它以YYYY-MM-DD格式存储在表格中 5)您还可以将日期列的数据与curdate()和相关函数进行比较,并且它可以工作:)。
6)像我使用的查询一样:从tablename中选择id,name,DATE_FORMAT(datecolumnname,'%d /%m /%Y')作为datecolumn2,其中datecolumnname&gt; = curdate();