2014-07-16 11 views
0

내 생각은 그 안에 Struts2에게 하나의 액션 클래스와 여러 방법을 사용하여 아래의 방법을 사용하여 작업을 수행하는 것입니다 manage/roles.action?method%3Aadd=AddStruts2 - 동일한 작업 클래스를 사용하지만 다른 메서드를 사용하여 struts.xml에서 작업 이름을 반복 할 수 있습니까?</p> <p>보기 역할 조치 :

URL이 제출 호출을 통해 호출됩니다 manage/roles.action?method%3Aview=View이 역할 조치를 추가 같은 버튼 TEST.JSP에서 아래와 : struts.xml에서

<s:form namespace="/manage/" action="roles" method="get" > 
    <s:submit method="view" value="View" /> 
    <s:submit method="add" value="Add" /> 
    <s:submit method="edit" value="Edit" /> 
    <s:submit method="delete" value="Delete" /> 
</s:form> 

, I 구성 :

<package name="portal" namespace="/manage/" extends="struts-default"> 
    <action name="home"> 
     <result>/WEB-INF/jsp/manage/roles/test.jsp</result> 
    </action> 

    <action name="roles" class="struts2.actions.RoleAction" method="view"> 
     <result name="success">/WEB-INF/jsp/manage/roles/viewRoles.jsp</result> 
    </action> 

    <action name="roles" class="struts2.actions.RoleAction" method="add"> 
     <result name="input">/WEB-INF/jsp/manage/roles/addRole.jsp</result> 
     <result name="success">/WEB-INF/jsp/manage/roles/viewRoles.jsp</result> 
    </action> 

불행히도보기 버튼을 누르면 "추가"메소드의 결과 JSP가 표시됩니다. 왜?

답변

0

같은 이름을 가진 두 가지 작업이 있기 때문에 roles입니다.

... /roles/roles 사이를 어떻게 구분 하시겠습니까?

다른 URL은 – 다른 URL이어야합니다. URL이 같기 때문에 마지막으로 구성한 URL이 승리합니다. 당신은 자신의 정의를 덮어 씁니다. /addrole/viewrole과 같이 다른 이름을 지정하거나 /roles/add/roles/view 등과 같이 이름을 지우는 것은 어떨까요?

+0

예, 마지막으로 구성된 작업이 실행되고있는 것으로 나타났습니다. Struts 1에서는'/ roles? action = add','/ roles? action = view' 등과 같은 것을 사용했습니다. Struts 2에서도 같은 것을 시도하고 있습니다. 그 아이디어는 간단합니다. 하나의 액션 클래스는 각각의 메소드가 그것 자신의 입력과 소유권을 가지고있는 다른 가능한 액션 메소드 ('/roles.action? method = add','/roles.action? method = view' 등)를 제공합니다. 결과. 공통 입력 및 결과 없음. 이것을 실현하는 방법? – Faisal

+0

@Faisal It *은 동적 메서드 호출을 사용하여 * 가능합니다 (기본적으로 S2.1 IIRC 주변에서 비활성화 됨). 나는 팬이 아니며 S2 반 패턴이라고 말하면서 국경을 접한다. 그럴 필요가 없습니다. –

+0

방금 ​​DMI에 대해 읽은 적이 있습니다. http://struts.apache.org/release/2.3.x/docs/action-configuration.html#ActionConfiguration-DynamicMethodInvocation DMI의 좋은 예를 제공해 주시겠습니까? 와일드 카드가 아닙니다. – Faisal