2010-03-25 3 views
0

필자의 주장과 마찬가지로 Action의 본질은 속성이 요청 매개 변수 값과 함께 푸시 될 수 있다는 것입니다. 클래스 액션 ActionSupport를 { 사용자 사용자를 확장인터페이스 유형의 작업 속성

는 가정하면 아래와 같이 액션과 재산 클래스가 존재), 그리고 하나 개의 멋진 기능은 Struts2가 직접 클래스의 type 속성에 대한 매개 변수 값을 채울 수 있다는 것입니다;

@Action(value="hello" {@result=(.......)}) 
    public void execute() { 
     ........ 
    } 
    ..... 
    public void setUser(User user) { 
    this.user = user; 
    } 
    public User getUser() { 
    return this.user; 
    } 
} 

class User { 
    String name; 
    ..... 
    public void setName(String name) { 
    this.name = name; 
    } 
    public String getName() { 
    return this.name; 
    } 
} 

당신은 다음과 같이 수행하여 사용자 클래스 속성을 채울 수 있습니다.

http://...../hello.action?user.name=John or via jsp page 

그런 다음 실제로 인터페이스 유형으로 Action 속성을 만드는 사람들이 있다는 것을 알고 있습니다. 내 질문은이 이유 뒤에 무엇입니까. 시연하는 샘플 코드가 있다면 훌륭 할 것입니다. 사전에

감사합니다!

답변

1

죄송 합니다만, 귀하의 질문에 많은 의미가 없습니다. 가 명확히하기 위해 :

  • "속성": 자바 클래스의 "속성"을 게터/세터 방법을 통해 (의 setXXX() /의 getXXX() => 속성 XXX)를 tipically (accesible입니다 무언가이다 반드시 그런 것은 아닙니다) 개인 필드에 해당합니다.

  • Struts2에는 요청에서 (매개 변수 인터셉터를 통해) 속성이 채워지고 (나중에는보기 단계에서 JSP에서 읽음) 일반적으로 Action 개체가 있고 반드시 그렇지는 않지만 항상 속성이 있습니다 (또는 무엇이든) 페이지. 예를 들어, http://...../hello.action?user.name=John 요청의 경우, Struts2는 "name"속성을 가진 "user"속성을 사용자의 액션 (실제로는 값 스택에서)에서 찾아서 설정하려고합니다 (유형이 변환 가능한 경우). 즉, yourAction.getUser(). setName ("John")과 같은 것을 호출하려고합니다. Struts2는 알지 못합니다. 실제 필드이든 아니든 "User"또는 "Name"속성은 어떤 유형입니까? (하지만 그들은 "bean"으로 행동 할 것으로 예상됩니다. 즉 그들은 기본 생성자를 가져야합니다).

  • 구체적인 클래스 대신 인터페이스를 코딩해야하는 이유는 모든 Java 책에서 설명하는 것입니다. 단지 표준 좋은 연습이며 많은 수의 페이지가 있습니다. Struts2와는 아무런 관련이 없습니다. 이런 맥락에서 Action을 위해, 어떤 "service"필드, 일반적으로 long-lived (아마도 singleton) 인 객체들에 대해서만 tip에 관심이 있고, action 자체 나 요청에 의해 인스턴스화되지 않는다. 따라서 이러한 인터페이스는 여기에서 고려중인 속성이 아니며 일반적으로 공개적으로 노출되지 않으며 일반적으로 클라이언트에서 채워지거나 읽지 않습니다.

관련 문제