struts 2 페이지 에서 action 중간 값 가 져 오기

http://terje.blog.163.com/blog/static/1192437120108250138927/
사장 님,사장 님,기 가 막 혀 요.
 
public class ParmValueAction extends ActionSupport {     private Usere user;     @Override     public String execute() throws Exception     {         ActionContext ctx = ActionContext.getContext();         HttpServletRequest req = ServletActionContext.getRequest();         Map requestMap = (Map) ctx                 .get("request");         ctx.put("userKey", user);         requestMap.put("userReqMap", user);         req.setAttribute("userReq", user);         return SUCCESS;     }     public Usere getUser()     {         return user;     }     public void setUser(Usere user)     {         this.user = user;     } } jsp:방법 1:    property 태그 사용 하기   
           
    방법 2:    property 탭 을 사용 하여\#userKey 를 사용 하여 값 스 택 을 찾 습 니 다.   
           
    방법 3:      property 탭 을 사용 하여\#action 을 사용 하여 값 스 택 을 찾 는 동시에 기본 검색 방식 을 사용 합 니 다.이 방법 은 방법 1 과 같 습 니 다.2.0 에 서 는 이 방법 을 사용 할 수 없습니다.2.1 사용 할 수 있 습 니 다.   
           
    방법 4:      property 탭 을 사용 하여\#userReq 를 사용 하여 값 스 택 을 찾 습 니 다.이 값 을 찾 을 수 없습니다.값 스 택 에 이 key 가 없 기 때 문 입 니 다.   
           
    방법 5:      property 탭 을 사용 하여\#userReqMap 을 사용 하여 값 스 택 을 찾 습 니 다.이 값 을 찾 을 수 없습니다.값 스 택 에 이 key 가 없 기 때 문 입 니 다.   
           
       
    request 값 추출 방법,userReqMap 에 저 장 된 user 를 가 져 옵 니 다.   
           
    request 값 추출 방법,userKey 에 저 장 된 user 를 가 져 옵 니 다.   
           
    request 값 추출 방법,userReq 에 저 장 된 user 를 가 져 옵 니 다:   
           
    request 값 추출 방법 1,action 에 저 장 된 user 를 가 져 옵 니 다:   
           
    request 값 추출 방법 2,action 에 저 장 된 user 를 가 져 옵 니 다:   
           
   
    jstl 값 추출 방법,userReq 에 저 장 된 user 를 가 져 옵 니 다:   
           
    jstl 값 추출 방법,userReqMap 에 저 장 된 user:   
           
    jstl 값 추출 방법,userKey 에 저 장 된 user:   
           
    jstl 값 추출 방법 1,action 에 저 장 된 user 를 가 져 옵 니 다:   
           
     jstl 추출 방법 2,action 을 통 해 action 에 저 장 된 user:   
           
   
    자바 인 코딩 으로 직접 가 져 오기:    <%    Usere user = (Usere)request.getAttribute("userReq");   Usere userMap = (Usere) request.getAttribute("userReqMap");   Usere userKey = (Usere) request.getAttribute("userKey");   //2.0 에서 action 을 가 져 올 수 없습니다.이번 테스트 의 버 전 은 2.1.8.1 입 니 다.  ParmValueAction action=(ParmValueAction)request.getAttribute("action");   //Usere userAction=action.getUser();   //String name=userAction.getName();   //int age=userAction.getAge();     %>     직접 찾기:     <%=user.getName() %>      <%=user.getAge() %>     
     사용자 맵 가 져 오기:     <%=userMap.getName()%>      <%=userMap.getAge()%>     
     userKey 가 져 오기:     <%=userKey.getName()%>      <%=userKey.getAge()%>     
    취 액 션:     <%=action.getUser().getName()%>      <%=action.getUser().getAge()%>   결과:방법 1:property 라벨 terje 25 방법 2:property 라벨 을 사용 하여\#userKey 를 사용 하여 값 스 택 을 찾 습 니 다 terje 25 방법 3:property 라벨 을 사용 하여\#action 을 사용 하여 값 스 택 을 찾 습 니 다.기본 검색 방식 을 사용 합 니 다.이 방법 은 방 법 1 과 같 습 니 다.2.0 에서 이 방법 을 사용 할 수 없습니다.2.1 terje 25 방법 4:property 탭 을 사용 하여\#userReq 를 사용 하여 값 스 택 을 찾 을 수 있 습 니 다.이 값 은 찾 을 수 없습니다.값 스 택 에 이 key 방법 이 없 기 때 문 입 니 다.5:property 탭 을 사용 하여\#userReqMap 을 사용 하여 값 스 택 을 찾 습 니 다.이 값 은 찾 을 수 없습니다.값 스 택 에 이 key 가 없 기 때 문 입 니 다.
request 수치 채취 방법,userReqMap 에 저 장 된 user:terje 25 request 수치 채취 방법,userKey 에 저 장 된 user:terje 25 request 수치 채취 방법,userReq 에 저 장 된 user:terje 25 request 수치 채취 방법 1,action 에 저 장 된 user:terje 25 request 수치 채취 방법 2,action 에 저 장 된 user:terje 25 request 수치 채취 방법
jstl 수치 채취 방법,userReq 에 저 장 된 user:terje 25 jstl 수치 채취 방법,userReqMap 에 저 장 된 user:terje 25 jstl 수치 채취 방법,userKey 에 저 장 된 user:terje 25 jstl 수치 채취 방법 1,action 에 저 장 된 user:terje 25 jstl 수치 채취 방법 2,action 을 통 해 action 에 저 장 된 user:terje 25
직접 자바 인 코딩 으로 가 져 오기:직접 가 져 오기:terje 25 userMap:terje 25 userKey:terje 25 가 져 오기 action:terje 25 이유:보 기 를 통 해
org.apache.struts2.dispatcher.StrutsRequestWrapper



소스 코드,아래 코드 는 apache 커 뮤 니 티 에서 Request 를 포장 한 것 입 니 다.이렇게 포장 하면 페이지 에서 전통 적 인 수치 추출 방법 으로 값 을 찾 지 못 하면 값 스 택 에서 찾 습 니 다.그러면 jstl 과 자바 코드 를 호 환 하여 직접 값 을 추출 할 뿐만 아니 라 struts 2 의 표지 판 도 순조롭게 값 을 찾 을 수 있 습 니 다.public Object getAttribute(String s) {         if (s != null && s.startsWith("javax.servlet")) {             // don't bother with the standard javax.servlet attributes, we can short-circuit this             // see WW-953 and the forums post linked in that issue for more info             return super.getAttribute(s);         }         ActionContext ctx = ActionContext.getContext();         Object attribute = super.getAttribute(s);         if (ctx != null) {             if (attribute == null) {                 boolean alreadyIn = false;                 Boolean b = (Boolean) ctx.get("__requestWrapper.getAttribute");                 if (b != null) {                     alreadyIn = b.booleanValue();                 }                     // note: we don't let # come through or else a request for                 // #attr.foo or #request.foo could cause an endless loop                 if (!alreadyIn && s.indexOf("#") == -1) {                     try {                         // If not found, then try the ValueStack                         ctx.put("__requestWrapper.getAttribute", Boolean.TRUE);                         ValueStack stack = ctx.getValueStack();                         if (stack != null) {                             attribute = stack.findValue(s);                         }                     } finally {                         ctx.put("__requestWrapper.getAttribute", Boolean.FALSE);                     }                 }             }         }         return attribute;     }

좋은 웹페이지 즐겨찾기