我的网络应用中存在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"/>
答案 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
属性,最终这将被转换为
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();