qiuzhiqing 2009-03-24 13:29
浏览 346
已采纳

如何在struts2中 对指定Action的方法进行框架(xml)校验?

问题描述: 1. 保存在线咨询功能
2. Action的保存方法是 addConsult()
3. 进行struts2的框架校验 校验规则配置在 WebConsultManagerAction-validation.xml
4. 要求校验规则只对 addConsult() 方法进行有效

WebConsultManagerAction 类如下:

[code="java"]package com.teamax.web.struts.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;
import com.teamax.web.service.WebConsultService;
import com.teamax.web.struts.actionForm.WebConsultForm;
import com.teamax.web.util.IPUtils;

/**

  • @author 作者:qiuzq
  • E-mail:qzq_hello@163.com
  • @version
  • 创建时间:Mar 23, 2009 4:05:30 PM
  • 类说明: 在线咨询
  • 修改记录:
    */
    public class WebConsultManagerAction extends ActionSupport implements ServletRequestAware{

    private static final long serialVersionUID = -8789596114574032277L;
    private static final WebConsultService webConsultService = new WebConsultService();
    private WebConsultForm webConsultForm = new WebConsultForm();
    private HttpServletRequest request;

    public void setServletRequest(HttpServletRequest request) {
    this.request = request;

    }

    public WebConsultForm getWebConsultForm() {
    return webConsultForm;
    }

    public void setWebConsultForm(WebConsultForm webConsultForm) {
    this.webConsultForm = webConsultForm;
    }

    //增加在线咨询
    public String addConsult() {

    webConsultForm.setUserip(IPUtils.getIpAddr(this.request));
    webConsultService.addConsult(webConsultForm);
    
    return SUCCESS;
    

    }

}[/code]

WebConsultManagerAction-validation.xml 校验规则如下:

[code="java"]<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<field name="webConsultForm.title">
   <field-validator type="requiredstring">
       <param name="trim">true</param>
       <message key="consultForm.title" />
   </field-validator>
</field>

<field name="webConsultForm.usercontent">
   <field-validator type="requiredstring">
       <param name="trim">true</param>
       <message key="consultForm.usercontent" />
   </field-validator>
</field>

<field name="webConsultForm.ccode">
   <field-validator type="requiredstring">
       <param name="trim">true</param>
       <message key="consultForm.ccode" />
   </field-validator>
</field>

[/code]

  • 写回答

3条回答 默认 最新

  • zhoujuan520 2009-03-24 13:40
    关注

    我知道你的Action中有很多方法,你不想每一个方法都使用这一个校验

    你可以

    在xxxAction中配置多个校验逻辑
    (1)xxxAction中一个校验方法public String abc()throws Exception{}
    (2)struts.xml中为该action设置method="abc"
    (3)校验XML命名:xxxAction-abc-validation.xml
    (4)注:在这种情况下,xxxAction-validation.xml依然会校验,所以我们称其为全局的Action校验
    (5)建议:若一个Action中处理多个业务逻辑,不写xxxAction-validation.xml,为每个业务逻辑写一个校验xml,防止校验之间的相互干扰

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog