私は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>