如何防止struts2自动数据约定抛出异常

时间:2012-12-10 18:27:26

标签: java struts2 web-frameworks

我是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

的文本字段中输入“”

1 个答案:

答案 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。它可能对你有所帮助。