문제점이 구성되어 있어도 해당 필드의 값을 입력하지 않으면 클라이언트 측 유효성 검사 오류 메시지가 표시되지 않습니다. 필요에 따라. 페이지가 다시로드되고 결과 페이지로 이동하고 클라이언트 유효성 검사가 실패합니다. 내가 뭘 잘못하고 있는지 모르겠다.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();
}
}
비슷한 문제가 있습니다. Validateable 인터페이스를 사용하고 있으며 양식을 제출할 때이 작동합니다. 하지만 s : form 태그에서 validate = 'true'로 설정하는 데 차이가 없음을 알 수 있습니다. 마치 클라이언트 측 유효성 검사 JavaScript 코드가 성공적으로 생성되지 않은 것처럼 보입니다. – Akku
실제로 문제가 될지 모르지만 http://struts.apache.org/2.0.6/docs/client-side-validation.html 링크를 참조하십시오. 도움이 될 수 있습니다. – Binay