首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts Xwork验证忽略应用程序返回按钮

Struts Xwork验证忽略应用程序返回按钮
EN

Stack Overflow用户
提问于 2014-05-16 15:06:36
回答 1查看 168关注 0票数 0

对于某些页面,我有一个场景可以忽略应用程序上的Struts验证。我有一堆书页。用户完成一个页面,然后单击“下一步”按钮进入另一个页面。单击“下一步”时,将对强制元素进行验证检查,它们运行良好。

在同一页中有“后退”按钮,单击该按钮用户将导航到上一页。即使没有输入强制元素,用户也应该允许转到上一页。但在我看来强制检查已经停止了。

我正在使用Struts验证框架工作。我有AdminWorkFlow-Validation.xml文件,它为页面提供了所有必需的验证。

如何在单击“后退”按钮时使验证检查忽略。

使用Struts 2.0.11和

代码语言:javascript
复制
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 08:55:07

我已经找到了解决问题的办法。我创建了自己的验证器。处理两件事。

  1. 当单击“后退”按钮时忽略验证
  2. 通过提供向导索引(静态)和页索引(按页设置)来管理具有相同操作的多个窗体系列。样本代码: /**

代码语言:javascript
复制
- Class is used to check the mandatory string. 
- This class can be used in flow of pages 
- talking to the same Action class  

*/

公共类MandatoryStringFieldValidator扩展FieldValidatorSupport {

代码语言:javascript
复制
  // Holds the Current Page Index, value picked from JSP(Front End) private String pageIndex = "0"; // Holds the Wizard Page which is set in the xxx-validation.xml private String wizardPage = "0"; // Holds a Value  by which I can identify if the action is back button click //If true validation is ignored. This is also taken from the JSP(Front End) private String backClicked;  public String getBackClicked() {     return backClicked; }  public void setBackClicked(String backClicked) {     this.backClicked = backClicked; }  public String getPageIndex() {     return pageIndex; }  public void setPageIndex(String pageIndex) {     this.pageIndex = pageIndex; }  public String getWizardPage() {     return wizardPage; }  public void setWizardPage(String wizardPage) {     this.wizardPage = wizardPage; }  @Override public void validate(Object object) throws ValidationException {     final String fieldName = getFieldName();     final Object value = getFieldValue(fieldName, object);     if(!"0".equals(pageIndex)){         Integer pageIndexValue = (Integer) getFieldValue(pageIndex, object);         if (pageIndexValue != null) {             backClicked = (String) getFieldValue(backClicked, object);             if(StringUtils.isNotBlank(backClicked) && Boolean.valueOf(backClicked)){                 pageIndexValue = pageIndexValue - 1;             }             pageIndex = String.valueOf(pageIndexValue);         }     }     if(wizardPage.equals(pageIndex)) {         if (!(value instanceof String)) {             addFieldError(fieldName, object);             return;         }         String strValue = (String) value;         if (StringUtils.isBlank(strValue)) {             addFieldError(fieldName, object);         }     } }

}

Validation.xml

代码语言:javascript
复制
<validators>
    <validator name="requiredStringValidator"   
             class="com.client.validation.MandatoryStringFieldValidator"/>
</validators>

终于在-validation.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="serviceMot.driverName">
        <field-validator type="requiredStringValidator" short-circuit="true">
                        <param name="pageIndex">pageIndex</param>
            <param name="backClicked">backClicked</param>
            <param name="wizardPage">1</param>
            <message>${getText('page1.mandatoryName')}</message>
        </field-validator>
</validators>

请注意:我已经剥离了一些代码,因为它有生产代码,并更改了文件中的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23698636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档