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

Struts2表单验证:如何在输入字段上方的同一jsp页面上显示错误消息?,struts2,validation,interceptor,Struts2,Validation,Interceptor,jsp中有一些html div标记,当用户单击相应的锚标记按钮时,将div的显示切换为block或none 假设用户点击了第二个锚按钮链接,相应的div加载了html表单。。 我有一个文件上传浏览按钮,使用下面的拦截器,限制上传限制maxsize和内容类型: <interceptor-ref name="fileUpload"> <param name="maximumSize">15728640</param> <param name="allowed

jsp中有一些html div标记,当用户单击相应的锚标记按钮时,将div的显示切换为block或none

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

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

15728640
申请表格/pdf
然后在java类中扩展ActionSupport,在违反maxsize和content类型的情况下获取返回类型作为输入

所以我在struts.xml中定义了

   <result name="input">  page.jsp </result>
page.jsp
但这会导致page.jsp重新加载,而不是保持相同的HTMLdiv状态,即div标记的第二种形式,再次点击第二种锚标记按钮,从而加载文件浏览形式

而不是

<s:fielderror> </s:fielderror> 

在第二个div标记的文件浏览表单中,我可以将其保留在body标记的开头,以显示返回的错误消息

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


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

document.getElementById(“div2”).display=“block”//或者点击相应的链接
由此


如果您使用的是thx anu,则替换为
hasFieldErrors()
。。但它会保留用户输入文本框的价值吗?即“文件浏览路径”保留在输入字段中。。jsp是否有任何方法,在输入结果名、返回类型时不定义jsp页面,从而限制它停留在同一页面上!不,由于安全原因,您无法设置文件标记的值。但是,您可以将文件名作为参数传递,以便在页面上的其他位置显示它。至于你的第二个问题,据我所知,这也是不可能的。为什么您不想在那里给出jsp页面名称?请参阅thx anu和nmc。因为我将在所有div中获得字段错误,因此仅使用就很难显示以页面加载错误结束的相应div,因为它包含所有div的所有错误。。如何将s:param与hasFieldErrors()一起使用以筛选出。。?我们是否有hasFieldErrors().fieldname之类的内容??