Struts2 $,#,% 상세 정보 및 인스턴스 코드
엔티티 존재:
public class Person { 
 
  private int id ; 
  private String Name ; 
   
  public int getId() { 
    return id; 
  } 
   
  public Person(int id, String name) { 
    super(); 
    this.id = id; 
    Name = name; 
  } 
 
  public Person() { 
    super(); 
  } 
  public void setId(int id) { 
    this.id = id; 
  } 
  public String getName() { 
    return Name; 
  } 
  public void setName(String name) { 
    Name = name; 
  } 
 
} 
@Override 
  public String execute() throws Exception { 
     
    //application  
    Person p = new Person(1,"zhangsan") ; 
    ActionContext.getContext().getApplication().put("person", p); 
     
    //session 
    Person p1 = new Person(3,"wangwu"); 
    ActionContext.getContext().getSession().put("person", p1); 
     
    //request 
    Person p2 = new Person(2,"lisi"); 
    ActionContext.getContext().put("person", p2) ; 
     
    //servletContext 
    Person p3 = new Person(5,"xiaoming"); 
    ActionContext.getContext().getContextMap().put("person", p3); 
     
    Person p4 = new Person(3,"wangwu"); 
    ActionContext.getContext().getValueStack().push(p4); 
     
    return "success"; 
  } 
person: <input type="text" name="name" value="${person }" /><br />  
id: <input type="text" name="name" value="${person.id }" /><br />  
name: <input type="text" name="name" value="${person.name }" /><br /> 
<hr> 
ActionContext.getContext().getContextMap() > ActionContext.getContext() >ActionContext.getContext().getSession() >ActionContext.getContext().get Application (), 서로 다른 scope (범위) 에 같은 이름의 대상이 존재할 때, $의 검색 방식은 상기 절차에 따라 진행됩니다. 찾기는 출력하고, 찾기는 계속 이전 검색을 하지 않으며, 꼭대기에 존재하지 않을 때null를 출력합니다.
그러면 $의 사용법은: ${scope.object.attribute}
scope의 속성 값은request,session,application입니다. 기본적으로 쓰지 않을 때 상술한 방안에 따라 검색하여 관련 속성 값을 출력합니다.
struts 탭에 다음을 저장합니다.
이때 #호를 사용한 것을 알 수 있다. 개인적으로는 #와 $의 사용법은 완전히 같다. 출력이 필요한 대상을 서로 다른 범위의 맵(servletContext,request,session,application)에 넣으면view에서 보여줄 때
<s:textfield name="person.name"></s:textfield> 
<input type="text" name="persom.name" id="person.name" value="<s:property value="#person.name"/>" /> 
같은 맥락에서 #의 용법은:
물론 struts2가 우리에게 정의한 라벨을 완전히 사용할 수 있습니다. 이렇게 하면 코드를 너무 많이 쓰는 번거로움을 완전히 줄일 수 있습니다.사실 #맵 등 대상을 구성하는 데 사용되는 다른 용법도 있지만 개인적으로view에서 코드를 너무 많이 쓰는 시대는 지났다. 이런 용법은 의미가 별로 없다. 게다가 이번에는view에서 보여주는 과정만 썼기 때문에 다른 부분은 상관없다.
마지막으로% 의 사용법을 조금 잡아서 간단하게 보면% {}는 문자열 계산 표현식이다. 예를 들어view에는 어떤 부분이 존재하고 일반적으로 CRUD 등 기본 기능이 존재한다.add와 uppdate 기능은 같은 페이지에서 완성할 수 있다. 서로 다른 것은 우리가 제출한 주소가 다르다. 예를 들어add 방법에 대해user_add.action,udpate 방법에 대한 주소는user_update.action, 그러면 form에서% 를 사용하여 판단할 수 있습니다.
<s:form action="user_%{ id == 0 ? 'add' : 'update' }"></form> 
같은 이치로,% 는 struts 중의if,ifelse 등 판단 라벨과 연합하여 비교적 많이 사용한다. 어쨌든 비교하는 것이냐...
<s:if test="%{false}"> 
  <div>Will Not Be Executed</div> 
</s:if> 
<s:elseif test="%{true}"> 
  <div>Will Be Executed</div> 
</s:elseif> 
<s:else> 
  <div>Will Not Be Executed</div> 
</s:else> 
public class Stduent implements java.io.Serializable{ 
   
  private static final long serialVersionUID = -691038814755396419L; 
  private int id ; 
  private String name ; 
  private int score ; 
  private String subject ; 
   
  public int getId() { 
    return id; 
  } 
  public void setId(int id) { 
    this.id = id; 
  } 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public int getScore() { 
    return score; 
  } 
  public void setScore(int score) { 
    this.score = score; 
  } 
  public String getSubject() { 
    return subject; 
  } 
  public void setSubject(String subject) { 
    this.subject = subject; 
  } 
   
  /** 
   *   
   * @param socre 
   * @return 
   */ 
  public boolean isPast(int socre){ 
    return getScore() > 60 ; 
  } 
   
} 
<s:iterator value="#allUser"> 
  <!--  , , ! --> 
    <s:if test="#session.user.isPast(score)"> 
        name: <s:textfield name="name"></s:textfield> 
        score: <s:textfield name="score"></s:textfield>\ 
        subject:<s:textfield name="subject"></s:textfield> 
    </s:if> 
</s:iterator> 
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Struts2 Result 매개 변수 상세 정보서버에 제출하는 처리는 일반적으로 두 단계로 나눌 수 있다. Struts2가 지원하는 다양한 유형의 반환 결과는 다음과 같습니다. Chain Result Action 체인 작업 Dispatcher Result Fre...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.