如何以特定格式显示验证消息<;部门>;Struts2中的元素

如何以特定格式显示验证消息<;部门>;Struts2中的元素,struts2,Struts2,我是Struts 2的新手,在保持页面布局方面面临以下问题: <s:form action="abc.action"><br> <s:textfield key="name" label="Name" /><%--here I need to display errormessage for `name`--%> <br> <s:textfield key="email" label="Email" /&g

我是Struts 2的新手,在保持页面布局方面面临以下问题:

<s:form action="abc.action"><br>
    <s:textfield key="name" label="Name" /><%--here I need to display errormessage for `name`--%>
    <br>
    <s:textfield key="email" label="Email" /><%--here I need to display errormessage for `email`--%>
    <br>
    <s:submit>
</s:form>




我正在为我的动作类使用xml验证器,这很好。但是验证错误消息会显示在fieldname和文本框上。但我希望它出现在相应的文本框之后(在另一个html容器中)。请告知。

根据Struts2默认模板,这是默认值。要更改它,请参见

如果您习惯于编写HTML,请切换到简单主题

在struts中,xml可能是最好的位置:

<struts>
  <constant name="struts.ui.theme" value="simple" />
</struts>

然后只需使用fielderror标记将字段的错误放在需要的位置


熟悉Struts2标签是一个很好的选择:

您也可以使用Struts2验证框架

Validation framework附带了一组有用的例程来自动处理表单验证,它可以处理服务器端客户端表单验证。如果某些验证不存在,您可以通过实现java接口来创建自己的验证逻辑

com.opensymphony.xwork2.Validator
Validator使用XML配置文件来确定应该安装哪些验证例程,以及如何将它们应用于给定的应用程序。xml文件包含所有通用验证器声明。若类路径中不存在validators.xml文件,则从路径加载默认验证文件

com/opensymphony/xwork2/validator/validators/default.xml
验证器范围 Struts2验证框架中有两种类型的验证器

  • 字段验证器
  • 非字段验证器
  • 字段验证器,顾名思义,对可通过操作访问的单个字段进行操作。相反,验证器更通用,可以在完整的操作上下文中进行验证,涉及验证规则中的多个字段(甚至没有字段)。大多数验证可以按字段定义。在可能的情况下,这应该优先于非字段验证,因为字段验证程序消息绑定到相关字段,并将显示在视图中相应的输入元素旁边

    <validators>
      <field name="bar">
          <field-validator type="required">
              <message>You must enter a value for bar.</message>
          </field-validator>
      </field>
    </validators>
    
    
    必须为条形图输入一个值。
    
    非字段验证程序仅添加操作级别的消息。非字段验证器主要是特定于域的,因此提供自定义实现。XWork提供的最重要的标准非字段验证器是ExpressionValidator

    <validators>
          <validator type="expression">
                <param name="expression">foo lt bar</param>
                <message>Foo must be greater than Bar.</message>
          </validator>
    </validators>
    
    
    福利特酒吧
    Foo必须大于Bar。
    

    对于完整的细节示例,请访问此链接

    谢谢四元数,这很好,因为我希望使用样式而不是struts提供的内置表来自定义表单。现在事情变得非常简单!很好,如果问题已经解决,请单击此答案的复选框。然后我们就知道这个问题已经解决了。你也可以将
    struts.ui.theme=simple
    放在
    struts.properties
    中。有些人喜欢它,但所有的属性都可以放在struts.xml中,使用常量标记,如果使用约定,struts.xml会保持相当薄,因此它可以完成双重任务,减少查找东西的地方。感谢nmc,我将在下一次作业中尝试改变主题。