2012-01-08 4 views
1

간단하지만 성가신 문제가 있습니다. <s:select> 태그를 성공적으로 채우는 객체 목록이 있습니다.스트럿츠 2 태그의 자바 스크립트 이벤트에 변수 전달

<s:select name="curProfesor.pais" value="%{curProfesor.pais}" list="paises" listValue="nombre" headerKey="" headerValue="Seleccione" label="País de Residencia:" onchange="changer(1,???})"/> 

하고 목록의 클래스의 구조는 다음과 같습니다 : 태그는 (스페인 이름이나 정보를 상관하지 마십시오 다음과 같다

public class Pais{ 
    private int id; 
    private int iso_num; 
    private String iso2; 
    private String iso3; 
    private String nombre; 

문제로 묘사된다 ??? 그리고 그것을 시도해도리스트에서 "onchange"함수로 정보를 전달할 수 없기 때문에 전달하고자하는 것은 객체의 ID이며 OGNL 대괄호를 사용하여 시도했습니다 (% {}) 작동하지 않는 것 같습니다.

이 문제에 대한 도움은 매우 높이 평가 될 것입니다.

편집 : 스트럿 태그는 다음과 같습니다 : 내가 통과하려고하면 현재 선택한 개체의 ID, 즉 당신이 여기에 두 가지 개념을 혼합하는 생각 <s:select>

답변

2

의 선택된 값의 ID입니다 페이지가으로 렌더링 된 후 의 페이지가 렌더링되고 클라이언트 쪽에서 옵션을 선택하는 동안 페이지가으로 렌더링 된 후에 으로 렌더링됩니다. 따라서 변경 사항을 게시하지 않는 한 Struts 태그를 사용하여 선택한 값을 가져올 수 없습니다.

먼저해야 할 일은 Pais ID가 SKS에서 이미 언급 한 것처럼 옵션 요소의 키로 렌더링되도록하는 것입니다.

<s:select id="curProfesor_pais" name="curProfesor.pais" list="paises" listKey="id" listValue="nombre" headerKey="" headerValue="Seleccione" label="País de Residencia:" onchange="changer('curProfesor_pais')"/> 

참고 listKey="id". 요소에 ID를 설정해두면 쉽게 참조 할 수 있습니다.

둘째, JavaScript 기능을 사용하여 선택한 옵션 ID를 가져 오기만하면됩니다. changer 함수에 요소의 ID를 전달

function changer(elementId) { 
    var selectedId = document.getElementById(elementId).value; 
    alert(selectedId); 
    //....... 
} 

정말 당신이 기능을 재사용 할 계획하지 않는 한 필요하지 않습니다.

또한 요소 이름이 동일하므로 value="%{curProfesor.pais}"은 중복됨을 유의하십시오 (curProfesor.pais).

예상대로 작동하지 않는 경우 항상 렌더링 된 HTML을 검사하십시오. 검사를했다면 Pais ID가 옵션 ID로 표시되지 않는 것을 알았을 것입니다.

0

이 수행해야합니다 작은 설명과 함께

<s:select list="mylist" listKey="myid" id="listid" onchange="callme()"/> 

<script type="text/javascript"> 
function callme(){ 
    var v=document.getElementById('listid').value; //id of the selected element 
    alert(v); 
} 
</script> 
+0

코드가 훨씬 더 :) –

관련 문제