Java 如何防止struts2自动数据约定引发异常

Java 如何防止struts2自动数据约定引发异常,java,struts2,web-frameworks,Java,Struts2,Web Frameworks,我是Struts新手,我为视图提供了一个模型courseBean来捕获信息 如果我以正确的形式输入正确的信息,它将非常有效。 否则,如果输入格式错误,它将抛出异常 比如说,我在courseBean.startDate中输入了abcd,它将引发异常,因为abcd无法更改为Date格式 有没有办法防止这些例外?或者我应该创建一个新的Bean类并将该类的所有属性设置为String吗 <!--Title--> <div class="co

我是Struts新手,我为视图提供了一个模型courseBean来捕获信息

如果我以正确的形式输入正确的信息,它将非常有效。 否则,如果输入格式错误,它将抛出异常

比如说,我在
courseBean.startDate
中输入了
abcd
,它将引发异常,因为
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输入的自动数据格式约定上


例如
警告:当我输入时,将表达式“courseBean.fee”设置为值“[Ljava.lang.String;@1b40489”
”时出错在映射到courseBean.fee的文本字段中

首先,您必须验证用户在表单中输入的数据。这可以通过多种方式完成,使用、使用或使用简单的
验证()
方法。如果官方文档不够,您可以在Internet上搜索大量如何使用Struts2验证数据的示例

然后,我想添加一些与jsp相关的内容。Struts2具有内置标记,可以呈现许多内容,并帮助您与jsp进行通信。如果我们讨论的是表单,例如,我们有
,可以帮助您,例如,不要将操作的url硬编码为HTML表单,或者
,这对于渲染验证错误

如果问题是您想要使用Twitter引导符号来构建页面,那么有一种方法可以使HTML准备好使用该CSS框架

编辑

WARNING: Error setting expression 'courseBean.fee' 
with value '[Ljava.lang.String;@1b40489'

aproach的问题是,您试图将
字符串[]
分配给一个可能不是
字符串[]
的字段(可能是
日期
)。您必须获取
字符串
并对其进行解析,以将其转换为
日期
对象。此外,如果您不知道
如何在Struts2中工作,您应该查看一下。这可能对您有所帮助。

您可以在之前使用validator interceptor进行验证set@muthu我已经编辑了我的答案:)我专注于汽车data格式约定。验证程序是否可以防止此错误?谢谢您的回答,但现在我对xml表单验证有问题。我在同一个类中定义了一些操作,它们共享相同的courseBean。一些操作是检索数据库记录,但一些操作是获取用户输入。当我请求这些操作检索数据库时cord,在那时,courseBean还没有设置。这将违反验证。因此我应该重构我的设计,创建一个类来执行仅检索数据库记录的操作,并创建一个类来执行接受数据输入和验证的操作?顺便说一句,问题集中在自动数据格式约定上。例如
警告:使用值设置表达式“courseBean.fee”时出错[Ljava.lang.String;@1b40489'
XML验证可以防止这个问题吗?非常感谢。我已经应用了Struts2标记库和插件以及XML验证。它们使我的jsp比以前更加清晰,但我还想防止课程的截止日期在今天之前。因此我应该在执行检查的操作?如果同时使用XML验证和
validate
方法,是否有问题?顺便说一句,我会问其他问题:)