2013-09-30 1 views
2

만약 제가 생각한다면, JSP 페이지에 Schedule 타입의 List이 있습니다. 나는 그것을 반복하고 목록의 특정 객체를 액션 클래스에 보내려고한다. 이것이 Struts 2를 사용하여 가능합니까? 내가 탐구 한 것은 객체의 식별자 변수의 값을 액션 클래스에 보내고 거기에 대응하는 행을 가져올 수 있다는 것이다.JSP에서 액션 클래스로 완전한 객체 보내기

<s:form action="FlightAction"> 
<s:iterator value="schedulelist" var="flight"> 
    <s:if test="#flight.sid==10"> 
     <s:hidden name="object" value="#flight"/> 
    </s:if> 
</s:iterator> 
     <s:submit value="Send"/> 
</s:form> 

이제 SID 값이 10이면 전체 Schedule 개체가 작업 클래스로 전송됩니다. schedulelist은 일정 유형의 개체를 포함하는 목록을 나타냅니다. SID는 POJO 일정의 식별자 변수입니다. Struts 2에서 이런 방식으로 완벽한 객체를 전송할 수 있습니까?

+0

HTTP/브라우저가 서버에 보내는 유일한 것은 문자열, 마침표입니다. 개체를 재생성하거나 세션에서 세션을 유지하려면 충분한 정보를 보내야합니다. 세션에 임의로 많은 수의 객체를 임의의 개수로 유지하는 것은 자체 단점이 있습니다. –

+0

@Dave 그래서 실제로 무슨 뜻인지 나는 객체의 식별자 변수 값을 액션에 보내고 액션 클래스에서 그 식별자에 대해 레코드를 가져와야한다는 것입니다. –

답변

0

요청 범위에있는 작업 클래스에 보내려는 "Schedule"개체를 넣은 다음 작업 클래스에서 액세스 할 수 있습니다.

<s:set name="scheduleObj" value="%{scheduleList.get(2)}" scope="request" /> 

위의 예는 3 차 개체를 scheduleObj 요청 변수에 넣습니다. 당신이

<s:hidden name="object.sid" value="%{#flight.sid}"/> 

를 사용하는 경우

+0

나는 당신의 대답을 정말로 이해하지 못합니다. 이것은 * 현재 * 요청에 대한 요청 범위에 객체를 넣습니다. JSP가 렌더링 된 후 액션을 치면 * new * 요청을했고 그 액션에서 오브젝트는 사용할 수 없습니다 *. –

+0

? JSP/struts 코드를 작성한 이후 오랫동안 사용되었지만 이것이 가능할 것으로 생각합니다. 그렇지 않으면 scope = "session"을 시도하십시오. 어떻게 생각해.? – Rajesh

+1

일단 JSP를 실행하면 액션 코드를 호출 할 때 새 요청이 필요하다고 생각합니다. ''태그를 사용하는 것과 같은 일을 특별히하지 않는 한보기 레이어의 요청 범위에 물건을 넣는 것은 거의 불가능합니다. –

0

그럼 당신은 당신이 만들고 getObject(), setSid() 방법을 제공해야 유형 Scheduleobject에 작업에 값을 보낼 수 있습니다.

Schedule 유형의 개체 모음을 채우려면 인덱싱을 사용해야합니다.

<s:hidden name="object[%{#status.index}].sid" value="%{#flight.sid}"/> 

Struts Type Conversion: Collections and Map support을 읽으십시오.

+0

답변을 주셔서 감사합니다하지만 난 내 질문을 이해하지 못했 생각해. 행동에 sid를 보낸 다음 그것에 대해 행을 가져 오는 것이 가능하며 그 사실을 알고 있습니다. 하지만 그 대신에 나는 완전한 목표를 행동으로 보내고 싶다. 나는 행을 가져 오는 오버 헤드를 피하고 싶다. 스트럿츠 2에서 가능합니까? –

+0

당신이 타입 변환 기술을 이해하지 못한다고 생각합니다. 그래서 나는 가능한 것을 썼습니다. 그리고 다른 정보가 없으면, * 깊은 학습 *을위한 추천 링크가 있습니다. –

+0

나는 실제로 이해하지 못했다. 코드로 설명 할 수 있습니까? 구현하는 코드의 작은 조각, UT는 위의 UR 대답했다. 감사. –