如何从struts2中的验证中排除操作方法

时间:2010-07-22 14:06:53

标签: struts2

我的Action类有以下方法,

1.add
2.edit
3.loadEdit
4.remove
5.list
6.execute

在这个我需要应用验证添加和编辑..如何确实需要在struts.xml.I中配置,

<action name="editComment" method="edit"
        class="com.mmm.ehspreg2.web.action.product.CommentAction">
    <result name="success">/jsp/propertyManager/loadList.jsp</result>
</action>
<action name="removeComment" method="remove"
        class="com.mmm.ehspreg2.web.action.product.CommentAction">
    <interceptor-ref name="validation">
        <param name="excludeMethods">remove</param>
    </interceptor-ref>
    <result type="tiles">listComment</result>
    <result type="tiles" name="input">listComment</result>
</action>

当我像这样配置时,不会调用remove action方法。我不明白这个问题。请协助。

2 个答案:

答案 0 :(得分:9)

您还可以在操作类

中进行方法初始化之前使用@SkipValidation

e.g。

@SkipValidation
public String save() {
    String result = super.save();
    if (result.equals(SAVE)) {
        setMessage1(getText("save.successful"));
    } else {
        setMessage1(getText("save.unsuccessful"));
    }
    jsonResponse = new Hashtable<String, Object>();
    jsonResponse.put(FIELD_JSONRESPONSE_STATUS,
            KEY_JSONRESPONSE_MESSAGE_SUCCESS);
    jsonResponse.put(FIELD_JSONRESPONSE_MESSAGE,
            KEY_JSONRESPONSE_EMPTY_STRING);
    jsonResponse.put(FIELD_JSONRESPONSE_VALUE, domainModel.getId());
    // System.out.println("domainModel>>>>>>" + domainModel.getId());
    return result;
}

答案 1 :(得分:8)

只需列出您想要通过excludeMethods参数中的验证框架运行的所有方法。由于您只需要验证addedit,请按以下方式列出其他4:

<interceptor-ref name="validation">
    <param name="excludeMethods">loadEdit,remove,list,execute</param>
</interceptor-ref>

您可以在Validation Interceptor docs中了解更多相关信息。