2012-01-08 8 views
1

私はシンプルで厄介な問題があります 私は<s:select>タグを正常に生成するオブジェクトのリストを持っています。タグは以下のとおりである(スペイン語名や情報を気にしないでください。ストラット2のタグのJavaScriptイベントに変数を渡す

<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の括弧を使って試してみました( %{})、それは動作していないようです。

この問題に関するお問い合わせは高く評価されます

EDIT:ストラットタグは以下のとおりです。私が合格しようとしていますが、現在選択されているオブジェクトのIDである、それは私があなたがここに二つの概念を混合されていると思います<s:select>

答えて

2

の選択した値のIDですの時点で処理され、サーバ上のページをにレンダリングし、クライアント側でこのオプションを選択すると、がレンダリングされた後にとなります。したがって、変更時にポストバックを行わない限り、選択した値を取得するためにstrutsタグを使用することはできません。

まず、あなたがしなければならないのは、すでに言及したように、Pais IDをオプション要素のキーとしてレンダリングすることです。

<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を設定したので、簡単に参照できます。

第2に、選択したオプションIDをJavaScript関数で取得するだけです。あなたが機能を再利用することを計画している場合を除き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

コードがはるかに優れています:) –

関連する問題