2017-10-30 3 views
1

2.3.x에서 2.5.12로 Struts를 업그레이드했는데 (2.5.13에서도 마찬가지 임) 나는이 업그레이드 후에 유효성 검사는 일어나지 않습니다.Struts 2.5.12/2.5.13 - struts를 업그레이드 한 후 유효성 검사가 작동을 멈췄습니다.

나는 JSP에 있습니다

<s:form action="details"> 
    <s:textfield name="fullName" size="20" label="full.name" requiredLabel="true" /> 
    <s:checkbox id="terms" name="terms" requiredLabel="true" /> 
    <s:submit name="submit" id="submit" value="Submit" /> 
</s:form> 

액션 이름 TestStrutsAction.java입니다. 내가 디버깅을 시도하고 나는 액션 클래스의 validate 방법의 모든 필드 오류가 표시되지 않습니다

@Override 
public void validate() { 
    super.validate(); 
    LOG.debug(getFieldErrors()); 
} 

: 나는 나의 행동 클래스에서 유효성 검사를 오버라이드 (override) 한

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" 
     "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> 
<validators> 
    <field name="fullName"> 
     <field-validator type="requiredstring"> 
      <message key="fullname.error"/> 
     </field-validator> 
     <field-validator type="regex"> 
      <param name="expression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param> 
      <message key="fullname.invalid"/> 
     </field-validator> 
    </field> 

    <field name="terms"> 
     <field-validator type="fieldexpression"> 
      <param name="expression">terms eq true</param> 
      <message key="terms.error"/> 
     </field-validator> 
    </field> 
</validators> 

:처럼 내 검증 XML TestStrutsAction-validation.xml 보인다.

누구든지 업그레이드 후에이 문제가 발생하는 이유를 알고 있습니까? 감사합니다.

+0

* 액션 클래스 *의 validate 메소드의 모든 필드 오류가 표시되지있을 수 있습니다 누군가 도움이 될 수 있습니다 - 당신이 무엇을 의미합니까를? 입력 결과로 이동합니까? –

+0

안녕하세요 @AleksandrM, 오류를 기록하기 위해 내 액션 클래스에서'validate' 메소드를 오버라이드했습니다. jsp 페이지에서 제출할 때 컨트롤이 메서드의 유효성을 검사 할 때 표시되지만 필드 오류가 추가되지 않는다는 것을 알았습니다. 내 질문에'validate' 메소드를 추가하도록 업데이트했습니다. 귀하의 회신에 감사드립니다. – Prasann

+0

[내 대답] (https://stackoverflow.com/a/18504177/573032)에서 보면 유효성 검사 방법이 인터셉터 바로 다음에오고 오류없이 유효성 검사를하면 어떤 필드 오류가 발생했는지 알 수 있습니다. –

답변

1

문제는 validation xml 파일에 사용 된 정규 표현식에서 발생했습니다. 나는 아래 regexExpressionexpression을 변경하고 작업을 시작

<field-validator type="regex"> 
    <param name="expression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param> 
    <message key="fullname.invalid"/> 
</field-validator> 

:로 나는 검증 XML의 정규식이있다.

<field-validator type="regex"> 
    <param name="regexExpression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param> 
    <message key="fullname.invalid"/> 
</field-validator> 

다른 정규화가 잘못된 정규식과 함께 작동하지 않는 이유는 확실하지 않지만 변경 후에는 모든 유효성 검사가 작동합니다.

이 유사한 문제 :

+0

좋습니다. :) 미래의 방문객을 돕기 위해 답을 수락하는 것을 잊지 마십시오. –

관련 문제