- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Struts2 的新手,正在尝试使用 addFieldError
在我的表格中 <s:select>
标签。我有一个表格,我必须从下拉列表中选择一个值。第一次显示此表单时,响应来自 Action 类,我在其中创建了一个 List。在我的表单中,我使用 <s:select>
在下拉列表中打印该列表像这样的标签:
<s:form action="clientselect">
<h2>Select Client to add the case :</h2>
<table>
<s:select list="list" headerKey="-1" headerValue="Select Client"
label="Select Client" tooltip="Select the desired client" name="client">
</s:select>
<tr><td><s:submit value="Register Case" theme="simple" align="right"/></td>
<td><s:reset value="Reset" theme="simple" align="right"/></td></tr>
</table>
</s:form>
“pageinclude=ancar”打印此表单。
struts.xml
<action name="clientselect" class="casediary.JudicialCaseRegisterValidation" method="execute">
<result name="addcase">user.jsp?pageinclude=ncr</result>
<result name="error">user.jsp?pageinclude=errancar</result>
<result name="input">user.jsp?pageinclude=ancar</result>
<result name="loggedout">index.jsp?pageinclude=relogin</result>
</action>
在 JudicialCaseRegisterValidation.java 中
public void validate()
{
if(client==null || client.equals("-1"))
addFieldError("client", "This field can not be blank.");
}
一切正常。错误条件得到满足,结果我得到“输入”。错误消息也正在打印,但下拉列表中的值已经消失。该列表正在打印为空。因为这次响应不是来自设置了 List 的 Action 类。
然后我更改了 struts.xml 以将请求从 <result>
发送到 Action 类像这样:
<result name="input" type="redirect">link.action</result>
“link.action”是在 Action 类中发送请求以创建列表并打印该表单的内容。
但是这次只是再次打印表单,没有打印错误信息。
我希望再次打印 List 以及除此之外的错误消息。请告诉如何。?
最佳答案
几乎所有开始使用 Struts2 的人迟早都会遇到这个问题。
在Struts2中请求一个Action时,你的请求会通过through an Interceptor Stack (拦截器列表);每个拦截器所做的都是特定的业务,然后重定向请求(在出现错误的情况下)或继续执行到下一个拦截器,如果是最后一个拦截器则继续执行。
验证由验证拦截器执行。如果验证失败,它将劫持 请求并将其重定向到struts.xml 中定义的input 结果。无论验证是通过 XML、通过Annotation 还是在 validate( ) Action 中的方法:未达到 Action ! 然后,execute()
中的所有内容方法,或者您正在调用的方法(如果您使用的是自定义方法)未执行;
如果要求将列表元素加载到 execute()
方法,它不会在输入结果的情况下执行。
避免这个问题的主要方法是:
实现 Preparable Interface ,并将所有数据加载内容放入 prepare() 方法中。
该方法由 Prepare Interceptor 运行,位于 Validation Interceptor 之前;
它将始终运行,并且它将在验证之前运行,无论您调用的是哪种操作方法(execute()
或其他),也不会遇到验证错误;
使用 <s:action/>
来自 JSP 的标记,以调用返回 JSP 片段的虚拟操作;
使用 redirectAction
作为 input 结果类型,到 execute()
(或其他)方法,就像你正在做的那样。
重定向时,它会丢失所有请求参数(包括操作错误、字段错误、操作消息等),然后您需要通过在struts.xml 中将它们声明为redirectAction
的参数来手动复制它们。结果。
恕我直言,第一种方式是首选。
编辑:
也是在官方文档中找到的:how do we repopulate controls when validation fails ?
关于java - addFieldError 错误 <s :select> in Struts2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16956217/
您好,我是 struts2 的新手。从一些书籍和网站上我得到了这个例子。在 Action 类中,它使用验证方法来检查逻辑。该方法在打印语句中称为 bcoz。但是错误没有显示在字段附近。帮帮我吧 索引.
我是 Struts2 的新手,正在尝试使用 addFieldError在我的表格中 标签。我有一个表格,我必须从下拉列表中选择一个值。第一次显示此表单时,响应来自 Action 类,我在其中创建了一个
我是一名优秀的程序员,十分优秀!