对于某些页面,我有一个场景可以忽略应用程序上的Struts验证。我有一堆书页。用户完成一个页面,然后单击“下一步”按钮进入另一个页面。单击“下一步”时,将对强制元素进行验证检查,它们运行良好。
在同一页中有“后退”按钮,单击该按钮用户将导航到上一页。即使没有输入强制元素,用户也应该允许转到上一页。但在我看来强制检查已经停止了。
我正在使用Struts验证框架工作。我有AdminWorkFlow-Validation.xml文件,它为页面提供了所有必需的验证。
如何在单击“后退”按钮时使验证检查忽略。
使用Struts 2.0.11和
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">发布于 2014-05-21 08:55:07
我已经找到了解决问题的办法。我创建了自己的验证器。处理两件事。
- 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 {
// 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
<validators>
<validator name="requiredStringValidator"
class="com.client.validation.MandatoryStringFieldValidator"/>
</validators>终于在-validation.xml
<?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>请注意:我已经剥离了一些代码,因为它有生产代码,并更改了文件中的名称。
https://stackoverflow.com/questions/23698636
复制相似问题