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 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类