2012-07-12 2 views
1

JSP 페이지에서 Action 클래스의 속성을 변경하려고 할 때, 예를 들어 양식으로 할 수 있지만 Action 클래스에 선언 된 객체의 속성을 변경하려고하면 할 수 없습니다. Struts 2 : Action 클래스에서 선언 된 Model 객체의 속성에 JSP 페이지에서 액세스하는 방법은 무엇입니까?

모델 클래스 :

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

액션 클래스 :

public class UserAction{ 
    private User user; 
    public String execute(){ 
    user = new User(); 
    } 
    public User getUser(){ 
    return user; 
    } 
    public void setUser(User user){ 
    this.user = user; 
    } 
} 

사용자 클래스가 속성에 생성자에서 defaut에 의해 값을 설정하고 나는 그것을 액세스 할 수 있습니다

<s:property value="user.name" /> 

하지만 양식을 통해 변경하려고하면 양식 다음에 대상 페이지의 값이 인쇄됩니다. 여전히 디폴트 값을 얻을 :

<s:form action="welcomeAction" > 
    <s:textfield name="user.name" label="User name " /> 
</s:form> 

미리 :)에 감사

+0

괜찮습니다. struts.xml에 문제가 있습니다. –

답변

0

내가 struts.xml에서 가졌다 : 그래서

<action name="welcomeAction" class="helloworld.action.UserAction"> 
<result>/welcome.jsp</result> 
</action> 

, 난 작업에 메소드 setUserFields을 만들었습니다 "완료"를 반환 클래스 :

<action name="welcomeAction" class="helloworld.action.UserAction" method="setUserFields"> 
<result name="done">/welcome.jsp</result> 
</action> 
2

당신의 execute() 방법의 다음 줄 가능성이 일이었다 전자 범인 :

user = new User(); 

작업 방법은 매개 변수 후 호출이 설정되어 있으므로 프레임 워크는 사용자의 사용자 객체를 구성 매개 변수를 설정 한 다음 즉시 사용자에게 재 할당 (이 경우 execute()에서) 액션 메소드를 호출합니다 변수를 새로운 User 객체로 변경하고 기본 설정으로 완료하십시오.

이렇게하면 struts.xml을 변경하여 실행과 다른 방법을 호출하여 문제가 해결되는 이유에 대해서도 설명합니다 (원래 struts.xml 구성이 괜찮음에 유의하십시오).

관련 문제