내 JSP 페이지에서 struts-layout을 사용하여 라디오 버튼이있는 테이블을 표시하고 있습니다. Struts 액션 클래스에서 execute 메소드를 호출하는 제출 버튼이 있습니다. 이것은 잘 작동합니다.reqCode를 사용하는 struts-layout 다중 제출 버튼
또 다른 방법을 실행하거나 같은 방법으로 두 번째 버튼이 클릭되었다는 것을 깨닫기 위해 같은 양식에 제출 버튼을 추가해야합니다. reqCode를 사용하여이 작업을 수행 할 수 있음을 이해합니다. 그러나 나는 방법을 이해할 수 없다.
내 JSP 코드 :
<layout:form action="/taskSelected.do" reqCode="execute" >
<layout:submit value="Show Task Status" styleClass="btn btn-default"/>
<layout:submit value="troubleshoot" styleClass="btn btn-default" reqCode="troubleshoot"/>
<layout:collection name="userTasks" title="" styleClass="FORM" selectProperty="uniqueID" selectType="radio">
<layout:collectionItem title="Task Name" property="name"/>
<layout:collectionItem title="UID" property="uniqueID" />
<layout:collectionItem title="Request Time" property="add_info" />
<layout:collectionItem title="FTP URL" property="ftp_url"/>
<layout:collectionItem title="Status" property="status" />
</layout:collection>
내 스트럿 - config.xml에
<action name="taskBean" path="/taskSelected" scope="session" type="com.myapp.struts.taskSelectedAction" validate="false">
<forward name="success" path="/ShowTaskStatus.jsp"/>
<forward name="troubleshootPage" path="/ShowTroubleshoot.jsp"/>
<forward name="failure" path="/ViewTasks.jsp"/>
</action>
내 액션 클래스 첫 번째 방법 :
public ActionForward troubleshoot(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("Method 1= " + request.getSession().getAttribute("troubleshoot"));
if(request.getSession().getAttribute("USER_KEY")==null){
return mapping.findForward("NotLoggedIn");
}
System.out.println("Reached in Troubleshoot");
return mapping.findForward("troubleshootPage");
}
두 번째 방법
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("Method 2= " + request.getSession().getAttribute("troubleshoot"));
if(request.getSession().getAttribute("USER_KEY")==null){
return mapping.findForward("NotLoggedIn");
}
이것은 매우 단순한 것으로되어 있지만, 나는 잘못 생각할 수 없습니다.
답장을 보내 주셔서 감사합니다. 이 방법을 사용하면 최소한 두 개의 다른 버튼을 사용하여 두 개의 별도 메서드를 호출 할 수 있습니다. 그러나 DataGrid의 데이터는 어떻습니까? 나는 레이아웃 컬렉션 (Datagrid)을 가지고 나의 목표는 그리드 사용자가 선택한 행을 식별하는 것이다. 그가 선택한 행과 버튼을 기준으로 별도의 작업을 시작해야합니다. 이 방법을 사용하면 select 속성 (이 경우 uniqueID)은 null을 반환합니다. – mumshad
FormBean을 만들고 폼 속성에 대한 getter/setter 메서드를 만들어야합니다. – Maverick