如何在Struts2

时间:2016-11-30 11:32:40

标签: java validation struts2 struts2-interceptors

我有以下代码段

来自XML文件的

<action name="list-process-solution" class="actions.ProcessSolutionAction" method="listProcessSolutions">
    <interceptor-ref name="store">
        <param name="operationMode">RETRIEVE</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>
    <result name="success">process_solution_list.jsp</result>
    <result name="input">process_solution_list.jsp</result>
    <result name="error">Error.jsp</result>
    <result name="login">Login.jsp</result>
</action>

<action name="delete-process-solution" class="actions.ProcessSolutionAction" method="crudProcessSolution">
    <interceptor-ref name="store">
        <param name="operationMode">STORE</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>
    <result name="success" type="redirectAction">
        <param name="actionName">list-process-solution</param>
        <param name="nsec">${nsec}</param>
    </result>
    <result name="error">Error.jsp</result>
    <result name="login">Login.jsp</result>
</action>

删除后我重定向到列表页面(同样再次页面)

但是我得到的结果是input我不知道我错在哪里。

我已将此链接配置为删除

<s:url var="varDeletePS" action="delete-process-solution">
    <s:param name="nsec">
        <s:property value="nsec"/>
    </s:param>
    <s:param name="processId">
        <s:property value="processId"/>
    </s:param>
    <s:param name="opType">
        <s:property value="2" />
    </s:param>
</s:url>
<s:a href="%{varDeletePS}" id="id-delete-PS-link" cssClass="class-delete">
    Delete
</s:a>

在行动中,我有 getters and setters

这些字段
private ProcessSolution processSolution;
private short opType;
private String nsec;
模型ProcessSolution

请参阅此link

我的问题是

如何在此处理结果名称input?我不知道哪个参数错了?

更新: -

如何在redirectAction之后继续使用相同的请求,以便获取我的请求参数?

如何识别哪个字段有错误?

更新2:

我的delete-process-solution正常执行,但结果成功redirectActionlist-process-solution,我的结果是输入

1 个答案:

答案 0 :(得分:0)

如果您有验证错误,则会返回

"input"结果。为操作类中的每个操作创建前缀的验证方法,并将input结果添加到操作配置中。

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

您可能遇到导致INPUT的验证错误,但未执行操作且未设置消息。如果要阻止验证操作,可以将操作配置为从验证拦截器中排除方法或使用上述解决方案。

validation拦截器实现方法过滤器拦截器而言,您可以在struts.xml中执行此操作。或者只是在方法上添加@SkipValidation注释。

@SkipValidation
public String crudProcessSolution(){//used this method for delete   

//<action name="delete-process-solution" class="actions.ProcessSolutionAction" method="crudProcessSolution">