2011-03-03 1 views
1

내 Action 클래스에서, 나는 메소드 이름을 정의URI 방법 대 이름을 다음과 같이 스트럿츠 2

<action name="*User" class="MyAction" method="do{1}User"></action> 

URI에서 AddUser 또는 DeleteUser와 같은 요청을하는 경우 작동합니다. 하지만 addUser 또는 deleteUser (소문자로 시작)와 같이 요청하고 싶습니다. 어떻게하면 될까요?

답변

1

URL은 대소 문자를 구분하므로 다음은 addUser 및 deleteUser를 작동하지만 AddUser 및 DeleteUser는 작동하지 않습니다. 두 가지를 모두 지원하려면 여러 매핑을 만들어야하지만, 그렇게하기 위해 노력해야한다고 생각하지 않습니다. 내가이 질문을 왜

<action name="*User" class="MyAction" method="{1}User"></action> 

public String addUser(){} 
public String deleteUser(){} 

이며, Struts1.x, 우리는 LookupDispatchAction 개념이있다. 사용자가 하나의 URL (예 : addUser)을 조회하면 정의 된 메소드를 어떤 이름 (예 : doAddUser)이라도 호출 할 수 있습니다. 이 경우 문제를 해결할 수 있습니다. 하지만 Struts 2.x에서는 (내가 아는 한) 그런 가능성은 없습니다.

dynamic method invocation을 찾는 것처럼 들립니다. 기본적으로 myAction으로 매핑 된 작업이있는 경우 myAction!addUser으로 이동하여 addUser() 메서드를 호출 할 수 있습니다. myAction!execute은 기본값이 myAction 인 것과 같습니다.

+0

답장을 보내 주셔서 감사합니다. 제안한 접근 방식은 URL과 메서드 이름이 동일해야 함을 나타냅니다. 하지만 난 그냥 method.ie.에 대한 사건을 변경하려면, 사용자가 addUser 안타, 난 AddUser 메서드를 호출해야합니다. 단일 작업 구성으로 여러 URL에 대해 여러 메서드를 호출하는 데 사용되는 와일드 카드 매핑과 같은 개별 매핑을 작성하지 않고 메서드 이름의 대/소문자 구분을 무시하기위한 다른 해결 방법이 있습니까? – kaluva

+0

URL과 메소드 이름 모두 대소 문자를 구별하므로 설명하는 것과 같은 설정을 알지 못합니다. 또한 메소드 이름으로'AddUser'가 Java 언어에 대해 확립 된 코딩 규칙을 벗어난 것을 알아 두십시오. –

+0

확인. 실제로 내 메서드 이름은 다음과 같습니다. uri addUser의 경우 메서드 이름은 doAddUser()입니다. 나는 이것이 자바 명명 규칙을 따른다고 생각한다. 왜 내가이 질문에 Struts1.x에서 LookupDispatchAction 개념을 가지고 있는지 묻습니다. 사용자가 하나의 URL (예 : addUser)을 조회하면 정의 된 메소드를 어떤 이름 (예 : doAddUser)이라도 호출 할 수 있습니다. 이 경우 문제를 해결할 수 있습니다. 하지만 Struts 2.x에서는 (내가 아는 한) 그런 가능성은 없습니다. 우리는 여러 매핑을 제공함으로써 이것을 구현할 수 있지만 내 경우처럼 모든 매핑이 동일한 resut 이름을 가짐 (다음 주석에서 계속 ...) – kaluva