2009-08-17 4 views
1

나는Struts2 : JSP 리포트에서 VO 클래스의 선택된 행의 해당 값을 설정하는 방법은 무엇입니까? 내 Struts2 응용 프로그램에서

<table> 
<tr> 
<td>ID</td> 
<td>PROOF</td> 
<td>DELETE</td> 
</tr> 

<s:iterator value="listOfVOClassObjects"> 
<tr> 
<td><s:property value="requestId" /></td> 
<td><s:property value="requestChecker" /></td> 
<td><s:property value="requestProof" /></td> 
<td><s:checkbox name="deleteStatus" onclick="submit()"/></td> 
</tr>  
</s:iterator> 
</table> 

는 사용자가 클릭 확인란 페이지를 제출하면 제어 액션 클래스에 가서 내가 대응하는 동시에 값에 필요 같은 반복자 태그를 사용하여 JSP (에서) 텍스트 보고서를 생성하고 사용자가 확인한 행은 VO 클래스로 작성된 setter 메소드에서 설정해야 액션 클래스에서 모든 값을 얻을 수 있습니다.

제가

<s:hidden name=" requestId" /> 
<s:hidden name=" requestChecker" /> 
<s:hidden name=" requestProof" /> 

하지만이 행의 해당 값이지만 쉼표로 구분 모든 행의 값을 리턴하지 같이 반복자 태그에서 모든 값에 대한 숨겨진 필드를 작성하여 이것을 시도.

나는 또한이 숨겨진 필드를 반복자 태그 외부에 쓰려고했는데 모든 필드에 대해 null을 반환합니다.

도와주세요.

답변

1

올바른 값을 얻고 조치에 전달할 수 있도록 submit() 메소드를 업데이트 할 수 있습니다.

+1

이것은 이전에 사용한 기술입니다. submit()을 호출하기 전에 값이없는 숨겨진 필드를 가지고 onclick 핸들러에 써 넣으십시오. –

+0

친애하는 Nate와 Brain이 아니라 checkbox의 onclick 이벤트를 직접 submit() 메소드를 호출하는 대신 javcript의 abc() 함수를 호출하고 내 abc() 함수 아래에있는 - 친구가 있지만 이득이 없습니다.동일한 문제는, 만약 hiddens가 iterator 태그에 쓰여지고 쉼표로 구분 된 모든 행의 값을 반환하고 hiddens가 iterator 태그 외부에 쓰여지고 null을 반환한다면. 도움. – vivmal

1

자바 스크립트 함수에서 현재 값을 설정 한 다음 제출하십시오. 그래서 당신은 다음과 같은 것을 가질 것입니다 :

<form method="post" action="myAction"> 
<script> 
function submitform(requestId, requestChecker, requestProof) { 
    document.findElementById('requestId').value = requestId; 
    document.findElementById('requestChecker').value = requestChecker; 
    document.findElementById('requestProof').value = requestProof; 
    document.forms[0].submit(); 

} 
</script> 

<s:hidden id="requestId" name="requestId" /> 
<s:hidden id="requestChecker" name="requestChecker" /> 
<s:hidden id="requestProof" name="requestProof" /> 

<table> 
<tr> 
<td>ID</td> 
<td>PROOF</td> 
<td>DELETE</td> 
</tr> 

<s:iterator value="listOfVOClassObjects"> 
<tr> 
<td><s:property value="requestId" /></td> 
<td><s:property value="requestChecker" /></td> 
<td><s:property value="requestProof" /></td> 
<td><s:checkbox name="deleteStatus" onclick="submitForm('<s:property value="requestId" />', '<s:property value="requestChecker" />', '<s:property value="requestProof" />');"/></td> 
</tr>  
</s:iterator> 
</table> 

</form> 
+0

두뇌, 답장을 보내 주셔서 감사합니다. 귀하의 솔루션을 시도, 해당 기능을 submitform (requestId, requestChecker, requestProof)에서 선택한 값을 받고 있지만 내 작업 클래스에서 NULL을 보냅니다. 내가 태그에 숨겨진 fileds를 쓴 것처럼 변경했고, 이번에는 객체 인 모든 속성의 valus를 태그에 반복 전송하고 있습니다. 두뇌, 2 개월 전 내가이 일을했다는 것을 알 수있다. 그것은 자바 스크립트없이 원활하게 실행했다. 그러나 실수로 코드가 손실되었습니다. 따라서이 기능은 struts2에서 사용 가능하며 매우 간단하지만 현재 마음에 들지는 않습니다. 많은 것을 배우십시오. – vivmal

0

그것은 당신이하는 일에 달려 있습니다. 서버 측에서 List를 다시 만들 수 있다면 핸들을 가져 오려는 목록의 POST를 POST하면됩니다. 예를 들면 다음과 같습니다.

<s:iterator value="myList" status="row"> 
... 
<s:checkbox onclick="deleteRow(%{#row.index})"/> 
</s:iterator> 

<script> 
function deleteRow(index){ 
    location.href=delete?listIndex=index 
} 
</script> 

값을 "받기"위해 listIndex에 대한 설정기를해야합니다. POST를 원한다면 GET을 사용하여 listindex를 숨겨진 필드로 만들 수 있습니다.

그러나 사용자가 브라우저에서 어떻게 든 목록을 수정 했으므로 서버에서 목록을 다시 만들 수없고 보존해야하기 때문에 POST의 매개 변수를 기반으로 목록을 만들려면 Struts2가 필요합니다. . 당신은 특별한 구문으로 그렇게합니다.

<s:iterator value="myList" status="row"> 
<s:hidden name="myList[%{#row.index}].requestId"/> 
<s:hidden name="myList[%{#row.index}].requestChecker"/> 
<s:hidden name="myList[%{#row.index}].requestProof"/> 
</s:iterator> 

이렇게하면 myList [0]. 액션에 myList에 대한 setter가 있고 액션에이 매개 변수를 POST하면 Struts2는 List를 작성하고 List에있는 객체의 속성을 채 웁니다. Generics List myList를 사용하여 Struts2에 어떤 종류의 "물건"이 있는지 알려줄 수 있습니다. 제네릭이 작동하지 않는다면 Struts2의 타입 변환 문서를 볼 수도 있습니다.

관련 문제