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;
}
}
struts2의 Action에는 다음과 같은 코드가 있습니다.
@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";
}
각각 application,session,request,servletContext,valueStack에person 대상을 저장하면 JSP에서 다음과 같이 얻을 수 있습니다.
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>
위 코드에서 얻은 개인 정보 시xiaoming의, 즉 ActionContext.getContext().getContextMap () 에 저장된 정보는 $의 사용법을 조회하여 $가 대상을 얻는 방식이 있다는 것을 발견합니다. 즉,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"/>" />
즉, struts의 라벨은 HTML의 text에 같은 맥락에서 #의 용법은:
물론 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 ;
}
}
그러면 현재 데이터베이스에서 학생 성적을 찾아list에 잠시 저장하고 JSP 페이지에서 우리는 다음과 같은 코드를 사용하여 성적제 출력의 합격 여부를 제어할 수 있다.
<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에 따라 라이센스가 부여됩니다.