我是Struts的新手。我为视图提供了一个模型courseBean来捕获信息。
如果我使用正确的表格输入正确的信息,它的效果非常好。 否则,如果我输入错误的格式,它将抛出异常。
说,我在abcd
中输入了courseBean.startDate
,它会引发异常,因为abcd
无法更改为Date
格式。
有没有办法防止这些例外?或者我应该创建一个新的Bean类并将该类的所有属性设置为String?
<!--Title-->
<div class="control-group">
<label class="control-label" for="inputEmail">Title:</label>
<div class="controls">
<input type="text" name="courseBean.title" placeholder="Title" value="<s:property value="courseBean.title" />"/>
</div>
</div>
<!--Start Date-->
<div class="control-group">
<label class="control-label" for="inputPassword">Start Date:</label>
<div class="controls">
<input type="text" readonly="readonly" name="courseBean.startdate" placeholder="Start Date" value="<s:property value="courseBean.startdate" />" />
</div>
</div>
此问题主要关注Bean输入的自动数据格式约定。
例如WARNING: Error setting expression 'courseBean.fee' with value '[Ljava.lang.String;@1b40489'
,当我在 courseBean.fee
答案 0 :(得分:1)
首先,您必须验证用户在表单中输入的数据。这可以通过多种方式完成,Annotations (section Validation Annotations),XML或您的操作中使用简单的validate()
方法。如果官方文档不够,您可以在Internet上搜索有关如何使用Struts2验证数据的大量示例。
然后我想添加与你的jsp相关的东西。 Struts2有内置的标签,可以渲染很多东西,并帮助你用jsps传达动作。如果我们正在谈论表单,我们可以帮助您,例如<s:form>
,不要在HTML表单或<s:textfield>
中对操作的网址进行硬编码,这对渲染验证错误很有用
如果问题是您想使用Twitter Bootstrap表示法来构建您的页面,那么有一个plugin可以使HTML准备好使用该CSS Framework。
编辑
WARNING: Error setting expression 'courseBean.fee'
with value '[Ljava.lang.String;@1b40489'
您的aproach的问题在于您尝试将String []
分配给可能不是String []
的字段(可能是Date
)。您必须使用String
并解析它以将其转换为Date
对象。另外,如果你不知道<s:textfield>
和<s:form>
在Struts2中的工作方式,你应该看一下this tutorial。它可能对你有所帮助。