Struts2表单验证:如何在输入字段上方的同一jsp页面上显示错误消息?

时间:2012-07-26 11:41:40

标签: struts2 validation interceptor

我的page.jsp里面有一些html div标签,当用户点击相应的锚标签按钮时,将div的显示切换为block或none。

假设用户单击第二个锚点按钮链接,在html表单中加载了适当的div .. 我有一个文件上传浏览按钮,使用下面的拦截器,限制上传限制maxsize和内容类型:

<interceptor-ref name="fileUpload">
<param name="maximumSize">15728640</param>
<param name="allowedTypes">application/pdf</param>
</interceptor-ref>  

然后在扩展ActionSupport的java类中,如果违反maxsize和内容类型,则将返回类型作为输入。

SO在struts.xml中我定义了

   <result name="input">  page.jsp </result>

但是这会导致page.jsp重新加载,而不是维护相同的html div状态,即div标签的第二种形式,再次必须单击第二个锚标签按钮,从而加载文件浏览表单。

而不是保持

<s:fielderror> </s:fielderror> 

在第二个div标签的文件浏览窗口内,我可以将它保存在body标签的开头,以显示返回的错误消息。

但我希望用户输入(如“文件浏览路径”)保留在输入字段中,错误消息显示在字段上方。如果我可以说服自己在另一个jsp页面上显示错误消息,那就没那么麻烦了。但只是推测,是否有可能实现我的目标?

1 个答案:

答案 0 :(得分:0)

<s:if test="hasActionErrors()">
        <s:actionerror/>
</s:if>

您可以将此代码放在您想要显示错误的任何位置 此外,如果您想显示包含要在页面加载时显示的表单的相应div,您可以在javascript代码中使用相同的策略

<script>
 <s:if test="hasActionErrors()">
         document.getElementById("div2").display="block";//or trigger click on the corresponding link
 </s:if>
</script>

从此post

如果您使用

,请替换为hasFieldErrors()