두 개의 JSP 페이지가 있습니다 (예 : form.jsp
및 myForm.jsp
).Struts 1.3 : 제출 후 요청 속성이 손실되었습니다.
첫 번째 페이지 인 form.jsp에는 라디오 버튼 그룹 (양식 이름은 "form")이 있습니다.
사용자가이 양식을 제출하면 일부 정보가 db에서 검색되고 이러한 정보로 myForm.jsp의 양식이 작성됩니다 (양식 이름은 "myForm"임).
이 두 번째 양식을 제출하면 오류 만 표시되지만 db 값에서 작성된 양식 필드는 표시되지 않습니다. 예를 들어, 데이터베이스 레이블과 두 개의 단일 선택 단추 (property = "prop")에 대한 값을 검색합니다. struts-config.xml
에서
, 내가 가진 :
<form-bean name="myForm" type="org.apache.struts.validator.MyValidatorActionForm">
<form-property name="prop" type="java.lang.Integer"></form-property>
</form-bean>
<action path="/form" input="/jsp/home.jsp" name="form" scope="request" type="myPackage.LoadInfo">
<forward name="Success" path="/jsp/myForm.jsp"/>
<forward name="Failure" path="/jsp/home.jsp" />
</action>
<action path="/myForm" input="/jsp/myForm.jsp" name="myForm" validate="true" scope="request" type="myPackage.MyValidatorAction">
<forward name="Success" path="/jsp/success.jsp"/>
<forward name="Failure" path="/jsp/failure.jsp"/>
</action>
myForm.jsp
에서 :
<html:form action="/myForm">
<div><label>* <bean:message key="myForm.label"/></label>
<c:forEach var="propTypes" items="${props}">
<html:radio property="prop" value="${propTypes.value}">${propTypes.label}
</html:radio>
</c:forEach>
<html:errors property="prop" />
</div>
<div><html:submit><bean:message key="myForm.label2"/></html:submit></div>
</html:form>
validation.xml
에서 :
라디오 버튼을 선택하지 않고 양식을 제출하면 오류가 표시되지만 라디오 버튼은 표시되지 않습니다.
어떻게 모든 요청 속성을 유지 관리 할 수 있습니까? 너무 범위 세션을 사용하려했으나 아무것도 변경되었습니다 :
<action path="/myForm" input="/jsp/myForm.jsp" name="myForm" validate="true" scope="session" type="myPackage.MyValidatorAction">
<forward name="Success" path="/jsp/success.jsp"/>
<forward name="Failure" path="/jsp/failure.jsp"/>
</action>
는 내가 해결 사용하여 :
request.getSession().setAttribute("props", props);
형태의 표시 전에 호출 작업 LoadInfo
에. myForm.jsp
에서
내가 사용하는 대신 스트럿 - config.xml 파일에서
request.getSession().getAttribute("props");
, 범위가 요청 남아있다.
그럼에도 불구하고 이것은 다른 브라우저 탭이 같은 세션을 공유하기 때문에 좋은 해결책이 아닙니다.
어떻게이 문제를 해결할 수 있습니까?
개인 int prop, get 및 set 메서드가 있습니다. 문제는 오류가있는 경우 (이 경우 라디오 버튼이 선택됨) 오류가 표시되지만 라디오 버튼은 표시되지 않습니다. 레이블과 msg 오류 만 있습니다. – Sefran2
이것이 좋은 아이디어인지 또는 작동하는지 여부는 모르겠지만 요청에서 세션으로 범위를 변경해 보았습니까? – Susie
나는 너무 생각하고 이미 세션으로 변경하려고했지만 작동하지 않습니다. – Sefran2