2010-04-15 2 views
1

문제점이 구성되어 있어도 해당 필드의 값을 입력하지 않으면 클라이언트 측 유효성 검사 오류 메시지가 표시되지 않습니다. 필요에 따라. 페이지가 다시로드되고 결과 페이지로 이동하고 클라이언트 유효성 검사가 실패합니다. 내가 뭘 잘못하고 있는지 모르겠다.Struts를 사용하여 클라이언트 측 유효성 검사에 문제 발생 2. XML 기반 유효성 검사 규칙이 인식되지 않음

나는 선택 기준이라는 풀다운 메뉴가있는 간단한 양식을 가지고 있습니다. 값을 선택해야합니다. 값을 선택하지 않으면 구성된 오류 메시지와 함께 페이지가 다시로드됩니다. 아래 나는 폭발 전쟁 파일의 내 WEB-INF/classes 디렉토리에 validators.xml를 추가해야

<%@ taglib prefix="s" uri="/struts-tags" %> 
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
    <title>Action Item Search</title> 
    </head> 
    <body> 
    <s:actionerror/> 
    <s:fielderror /> 
    <s:form action="action_item_search" validate="true"> 
     <s:select label="Search Criterion" name="searchCriterion" 
      list="#{'': 'Select One', 'creatorName':'creator name', 
      assignedTo':'assigned to'}" required="true" />    
     <s:submit name="search" value="Search"></s:submit> 
    </s:form> 
    </body> 

:

<!DOCTYPE validators PUBLIC 
    "-//OpenSymphony Group//XWork Validator Config 1.0//EN" 
    "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"> 
<validators> 
<validator name="required" 
     class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> 
<validator name="requiredstring" 
     class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/> 
<validator name="int" 
     class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/> 
<validator name="long" 
     class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/> 
<validator name="short" 
     class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/> 
<validator name="double" 
     class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/> 
<validator name="date" 
     class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/> 
<validator name="expression" 
     class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/> 
<validator name="fieldexpression" 
     class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> 
<validator name="email" 
     class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> 
<validator name="url"    
     class="com.opensymphony.xwork2.validator.validators.URLValidator"/> 
<validator name="visitor"   
     class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/> 
<validator name="conversion" 
    class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/> 
<validator name="stringlength" 
     class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/> 
<validator name="regex" 
     class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/> 
<validator name="conditionalvisitor" 
class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/> 
</validators> 

ActionItemTrackingAction-findByCriteria- 내 입력 폼 action_item_search.jsp은 아래와 같습니다

<!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="searchCriterion" > 
    <field-validator type="required"> 
    <message>You must enter a search criterion.</message> 
    </field-validator> 
</field> 
</validators> 

내 스트럿 매핑 XML :

WEB-INF가/classes 디렉토리에 validation.xml은 아래와 같습니다
<struts> 

<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
<constant name="struts.devMode" value="true" /> 

<!-- <include file="example.xml"/> --> 
<package name="action-item" extends="struts-default"> 
     <action name = "action_item_search_input"> 
     <result name = "success">/action-item-search.jsp</result> 
    </action> 
    <action name="action_item_search" class="gov.nasa.spacebook.ActionItemTrackingAction" method="fetchByCriteria"> 
     <result name = "success">/action-item-result.jsp</result> 
     <result name = "input">/action-item-search.jsp</result> 
     <result name = "error">/action-item-search.jsp</result> 
    </action> 
</package> 
</struts> 

내 액션 클래스는

public class ActionItemTrackingAction extends ActionSupport { 
    private List<ActionItem> actionItems; 
    public List<ActionItemTracking> getActionItems() { 
    return actionItems; 
    } 
    public void setActionItems(List<ActionItemTracking> actionItems) { 
    this.actionItems = actionItems; 
    } 

    private String searchCriterion; 
    public String getSearchCriterion() { 
    return searchCriterion; 
} 
public void setSearchCriterion(final String criterion) { 
    this.searchCriterion = criterion; 
} 

    public String fetchByCriteria() throws Exception { 
     final ActionItemTrackingService service = 
     new ActionItemTrackingService(); 
    this.actionItems = service.getByField(this.actionItem); 
    return super.execute(); 
} 
} 
+0

비슷한 문제가 있습니다. Validateable 인터페이스를 사용하고 있으며 양식을 제출할 때이 작동합니다. 하지만 s : form 태그에서 validate = 'true'로 설정하는 데 차이가 없음을 알 수 있습니다. 마치 클라이언트 측 유효성 검사 JavaScript 코드가 성공적으로 생성되지 않은 것처럼 보입니다. – Akku

+0

실제로 문제가 될지 모르지만 http://struts.apache.org/2.0.6/docs/client-side-validation.html 링크를 참조하십시오. 도움이 될 수 있습니다. – Binay

답변

0

나는 내 개발 컴퓨터에 인터넷 연결이없는 동일한 문제가 있습니다.

내 개발 컴퓨터에 인터넷 연결이 설정되면 응용 프로그램을 다시 컴파일하고 실행하여 유효성 검사가 작동합니다. validators.xml과 같은 인터넷이 필요합니다.

+0

나는 여전히 복제 할 수 있습니다. 이 문제는 인터넷 연결의 유무에 관계없이 발생합니다. – Kartik

0

귀하의 JSP에 <s:head/> 태그를 입력해야합니다. 다른 현명한 클라이언트 측 유효성 검사는 struts2x에서는 불가능합니다. 기본적으로 경고 상자는 표시되지 않습니다. HTML에 의해 생성 된 함수 이름을 사용하여 onSubmit=<true/false>을 사용해야합니다. 브라우저에서 생성 된 양식의 소스 코드를 보면서 함수 이름을 확인할 수 있습니다. 희망이 당신을 도울 것입니다.

관련 문제