0

私は2つの選択肢があります。2 番目の選択値は、最初の値に依存します。ユーザーが最初の選択で値を選択すると、アクションが呼び出されて 2 番目の選択が埋められます。ユーザーがフォームを送信し、検証エラーがある場合にのみ機能します。

ユーザーが最初の選択で値を選択したときに、div をリロードするにはどうすればよいですか?

私のjqueryは次のとおりです。

$('select[name=select1]').change(function () {
            var cod=$(this).val();
            if (cod>0) {
                $.ajax({
                    url:"Load.do",
                    data: "cod="+cod,
                    });
            }
        });

struts-config.xml には、次のものがあります。

<action path="/Load" scope="request" type="mypackage.Load">
    <forward name="Success" path="/jsp/myForm.jsp"/>
 </action>

クラス Load はアクションです。

public class Load extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
{
    // TODO Auto-generated method stub

    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
        // get the connection 
        stmt = (Statement) con.createStatement();

        String cod = request.getParameter("cod");

        String select = new String("Select firstCode, name from mytable where secondCode = '");
        select = select.concat(cod);
        select = select.concat("';");
        rs = stmt.executeQuery(select);
        ArrayList<LabelValueBean> arr = new ArrayList<LabelValueBean>();            
        while (rs.next()) {
            arr.add(new LabelValueBean(rs.getString("name"),rs.getString("firstCode")));
        }

        request.getSession().setAttribute("arr", arr);

        return mapping.findForward("Success");
    } catch (NamingException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }  catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (rs != null) {
              try { rs.close(); } catch (SQLException e) {}
              rs = null;
        }
        if (stmt != null) {
              try { stmt.close(); } catch (SQLException e) {}
              stmt = null;
        }
        if (con != null) {
              try { con.close(); } catch (SQLException e) {}
              con = null;
        }        
    }

    return mapping.findForward("Failure");
}
 }

私の myForm.jsp ページでは、塗りつぶしたい選択は次のとおりです。

 <html:select property="prop1">
 <html:option value="0">Choose:</html:option>
 <% if (request.getSession().getAttribute("arr") != null) { %>
<html:optionsCollection name="arr" label="label" value="value"/>
<% } %>
</html:select>
4

1 に答える 1

0

応答データに必要な html が正確に含まれている場合、つまり<select>すべてのオプションが正しい場合は、2 番目の選択を応答データに置き換えるだけです。

$('select[name=select1]').change(function () {
    var cod=$(this).val();
    if (cod>0) {
        $.ajax({
            url:"Load.do",
            data: "cod="+cod,
            success: function(result) {
                $('select[name=select2]').replaceWith(result); //guessing the name
            }
        });
    }
});
于 2012-11-06T15:52:40.610 に答える