2014-06-11 2 views
0

내 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"); 
    } 

이것은 매우 단순한 것으로되어 있지만, 나는 잘못 생각할 수 없습니다.

답변

0

JSP 페이지에서 두 개의 버튼을 사용하십시오 (한 번에 두 개의 제출을 ​​시도했지만 저에게 적합하지 않았습니다). 당신은 단 하나의 액션 클래스가 필요합니다

<action name="taskBean" 
     path="/taskSelected" 
     scope="session" 
     type="com.myapp.struts.taskSelectedAction" validate="false" 
     parameter=method> 

struts-config.xml 파일에

<input type="button" value="Method1" onclick="location.href='taskSelected.do?method=method1';"/> 
<input type="button" value="Method2" onclick="location.href='taskSelected.do?method=method2';"/> 

, 추가 매개 변수 = 방법.

public class taskSelectedAction extends org.apache.struts.actions.DispatchAction{ 

    public ActionForward method1(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) 
    throws Exception{ 
     //your code goes here  
    } 

    public ActionForward method2(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) 
    throws Exception{ 
     //your code goes here 
    } 
} 
+0

답장을 보내 주셔서 감사합니다. 이 방법을 사용하면 최소한 두 개의 다른 버튼을 사용하여 두 개의 별도 메서드를 호출 할 수 있습니다. 그러나 DataGrid의 데이터는 어떻습니까? 나는 레이아웃 컬렉션 (Datagrid)을 가지고 나의 목표는 그리드 사용자가 선택한 행을 식별하는 것이다. 그가 선택한 행과 버튼을 기준으로 별도의 작업을 시작해야합니다. 이 방법을 사용하면 select 속성 (이 경우 uniqueID)은 null을 반환합니다. – mumshad

+0

FormBean을 만들고 폼 속성에 대한 getter/setter 메서드를 만들어야합니다. – Maverick