2012-09-01 2 views
3

ArrayList 유형의 세션 변수가 있습니다. jsp 페이지에서 동적으로 양식을 만들려면 인덱스로 액세스해야하지만 양식을 제출 한 후에는 세션 ArrayList의 요소 값이 변경되지 않았다는 것을 알았습니다. 같은 크기를 가지고폼의 인덱스로 세션 ArrayList에 액세스하는 방법은 무엇입니까?

<s:iterator value="anotherArray" status="RowsIterator"> 
<tr> 
    <td> 
    <s:iterator value="actionOptionsArray" status="iter"> 
    <s:radio 
    name="#session.chosenActionsArray[%{#RowsIterator.index}]" <!-- The concerned line --> 
    list="%{actionOptionsArray[#iter.index]}" 
    value="#{actionOptionsArray[0]}" 
    theme="simple" /> 
    <br> 
    </s:iterator> 
    </td> 
    <!-- other fields--> 
</tr> 
</s:iterator> 

anotherArray# session.chosenActionsArray :

은 여기 (나는 struts2 프레임 워크를 사용) 내가 내 JSP 페이지에 해봤입니다.

나는 그것을 잘못 반복하는 것 같지만, 나의 경우에는 인덱스로 반복하는 것은 의무이다. 미리 감사드립니다.

+0

나는 당신이 말할 수있는 생성 된 html이 없으면 물론 당신의 문제라고 생각하지 않는다. 당신이 제출하는 액션 없이는 구체적인 솔루션을 만드는 것이 어렵다. – Quaternion

+0

안녕하세요! 답변 주셔서 감사합니다. 글쎄, 내 행동은 잘 작동하고 문제는 그것에 있지 않습니다. 내 문제는 양식에서 "ArrayList의 ArrayList"(매트릭스) 값을 설정하는 방법을 모르겠다는 것입니다. 고맙습니다. – Angelina

답변

1

액션을 통해 세션에 액세스해야하며 세션은 jsp에서 액세스 할 수 있지만 외부에서 직접 액세스 할 수는 없습니다.

SessionAware를 구현하기 위해 양식을 제출하는 작업을하십시오. 적절한 유효성 검사와 함께 ArrayList에 대한 getter/setter를 만든 다음 execute 메서드를 통해 해당 값을 세션으로 이동합니다. 나는 외부 세계에 직접 세션을 노출하는 팬이 아니다. (당신의 액션에서 세션을위한 세터를 제공한다.) 이것을하면, 악의적 인 사용자에게 자신의 일에 대한 액세스 권한을 부여했다는 것을 알아야한다. 예상하지 못할 수도 있습니다.

편집

당신이 당신의 행동에 "매트릭스"... 당신은을 통해 속성을 반복 할 수라는 문자열의 ArrayList를의 ArrayList에 있다고 가정하자 : 이상

<s:iterator value="matrix"> 
    <s:iterator> 
    <s:property/> 
    </s:iterator> 
</s:iterator> 

외부 반복자, 반복을 "matrix"는 각 인스턴스를 값 스택의 맨 위로 밀어 넣습니다. 내부 반복자는 기본적으로 스택의 맨 위에있는 태그를 속성 태그와 동일하게 사용합니다. tr 및 td 요소를 올바른 위치에 배치하면 테이블을 렌더링 할 수 있습니다.

입력 요소 (숨겨진 요소 일 수도 있음)의 올바른 이름 속성을 생성하려면 matrix [i] [j] 형식으로 지정해야합니다. 여기서 i와 j는 정수이고 적절한 행렬을 정의합니다. 이전처럼 이터레이터의 상태 속성을 사용하면 인덱스를 생성하는 좋은 방법이 될 것이다.

+0

나는 당신의 요지를 가지고 있으며 나는 당신에게 동의합니다. 하지만 문제는 내 액션 클래스에서 하나의 액션을 호출 한 후에 값을 가져 오는 Array가 있지만 그 수명이 짧고 두 번째 액션을 호출하면 크기가 0 인 것을 보여줍니다 ... 그 이유는 세션 변수에 대한 생각. Otherwhise, 내 ArrayList에 대한 jsp 페이지에서 내 arraylist에 대한 크기를 설정할 수 있다면, 그 해결책도 될 것이지만 어떻게 해야할지 모르겠다 ... 고마워. – Angelina

+0

코드를 제공하십시오. 추상적으로보다 구체적으로 작업하는 것이 훨씬 쉽습니다. 문제가 해결되면 적절한 데모를 만들 수 있습니다. 그렇지 않은 사람이 문제를 해결할 수 있습니다. – Quaternion

관련 문제