本页面能否传递参数? 各位大哥,我在做JSP开发时遇到传参数问题,比如有两个select,第二个select的下拉选项需要第一个select的key值才能显示,我该怎么传这个key值呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String value=request.getParamter("d");if(value){..}这样判断下。因该可以把 request不是用与两个页面跳转时用的吗? 这个问题是在同一个页面要实现传参 第二个SELECT的方法需要一个参数,这个参数是来自与第一个SELECT的键值,这同时页面无跳转 如果是用JSF开发的话,对于select有专门的监听器,你只需要些个监听函数就可以实现相应的功能。如:<h:selectOneMenu id="dept" value="#{TmbRecordSearchForm.fldDept_Id}" styleClass="select_large" valueChangeListener="#{ManageCtrl.deptValueChange}" onchange="selChanged(this);"><f:selectItems value="#{TmbRecordSearchForm.deptNameList}"/> </h:selectOneMenu>valueChangeListener这就是监听器,详细情况可以参考以下资料,如果要进一步探讨,可以加我 MSN:[email protected] 在同一个html内部,那么这些动作应该通过js来做。事实上,你提的问题是两个select联动的问题。csdn里有很多类似的帖子,找找吧。 给你帖一个select联动的程序,是我现在用的。<tr> <td align="left" class="formbg2">文章分类</td> <td class="formbg2"> <select name="select2" id="select2" onChange="changeType()"> <option value=0 selected>所有栏目</option><% /** * 这段代码用来取出所有的品牌信息 */ Vector vInJsp = new Vector(); connectToDatabase(); Statement stmtArray = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rsArray = stmtArray.executeQuery("select id,classname,classlevel,classupid from web_class"); while( rsArray.next() ) { String[] item = new String[4]; item[0] = rsArray.getString("id"); item[1] = rsArray.getString("classname"); item[2] = rsArray.getString("classupid"); item[3] = rsArray.getString("classlevel"); vInJsp.addElement( item ); } rsArray.close(); stmtArray.close(); //----------- 到这里为止,读完了 Statement stmtone = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rsone = stmtone.executeQuery("select * from web_class where classlevel=1"); while( rsone.next() ) { int idone = rsone.getInt("id"); String nameone = rsone.getString("classname"); if( String.valueOf(idone).equals( request.getParameter("select2") ) ) { out.println("<option value='" + idone + "' selected>" + nameone + "</option>"); } else { out.println("<option value='" + idone + "'>" + nameone + "</option>"); } } rsone.close(); stmtone.close();%> </select> 分 类: <select name="select3" id="select3"> <option value=0 selected>所有分类</option><% Statement stmttwo = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rstwo = stmttwo.executeQuery("select * from web_class where classlevel=2"); while( rstwo.next() ) { int idtwo = rstwo.getInt("id"); String nametwo = rstwo.getString("classname"); out.println("<option value='" + idtwo + "'>" + nametwo + "</option>"); } rstwo.close(); stmttwo.close(); disConnectToDatabase();%> </select> </td> </tr><script>function CarStyleInfo(){ this.Data = new Array(<%=vInJsp.size()%>);<% for( int i = 0; i < vInJsp.size(); i ++ ) { String item[] = (String[])vInJsp.elementAt(i);%> this.Data[<%=i%>] = new Array(3); this.Data[<%=i%>][0] = "<%=item[0]%>"; this.Data[<%=i%>][1] = "<%=item[1]%>"; this.Data[<%=i%>][2] = "<%=item[2]%>"; this.Data[<%=i%>][3] = "<%=item[3]%>";<% }%>}function changeType(){ var src = window.event.srcElement; var series = document.forms[0].select3; series.length = 0; var o1 = document.createElement("OPTION"); o1.text = "所有分类"; o1.value = "0"; series.add( o1 ); var info = new CarStyleInfo(); if( src.selectedIndex == 0 ) { for( var i = 0; i < info.Data.length; i ++ ) { if( info.Data[i][3] == "2" ) { var op = document.createElement("OPTION"); op.text = info.Data[i][1]; op.value = info.Data[i][0]; series.add( op ); } } } else { var selValue = src.value; for( var i = 0; i < info.Data.length; i ++ ) { if( info.Data[i][2] == selValue ) { var op = document.createElement("OPTION"); op.text = info.Data[i][1]; op.value = info.Data[i][0]; series.add( op ); } } }}</script>你看看吧,应该可以满足你的需求。 如何能不让127.0.0.1:8080显示 哪位高手给小弟发一个ssh+jbpm的实例啊,多些注释最好,谢谢了! java中怎样从嵌套if语句中跳出?(急!急!急!) 请教这个怎样调试啊 急用!如何画正态分布图 JSP 调用水晶报表10 问一个Servlet Filter的问题 新建java Web 出现的问题 球指点 急急!!!! ServletContext.log()到底是怎么一回事,写到那里了还是????? 请问怎样才能透彻的理解java的原理及精髓所在? 高手支招 [JavaScript]在哪可查到treeview控件的属性?
if(value)
{
..
}
这样判断下。因该可以把
<h:selectOneMenu id="dept" value="#{TmbRecordSearchForm.fldDept_Id}"
styleClass="select_large" valueChangeListener="#{ManageCtrl.deptValueChange}" onchange="selChanged(this);">
<f:selectItems value="#{TmbRecordSearchForm.deptNameList}"/> </h:selectOneMenu>
valueChangeListener这就是监听器,详细情况可以参考以下资料,如果要进一步探讨,可以加我 MSN:
[email protected]
事实上,你提的问题是两个select联动的问题。csdn里有很多类似的帖子,找找吧。
<tr>
<td align="left" class="formbg2">文章分类</td>
<td class="formbg2">
<select name="select2" id="select2" onChange="changeType()">
<option value=0 selected>所有栏目</option>
<%
/**
* 这段代码用来取出所有的品牌信息
*/
Vector vInJsp = new Vector();
connectToDatabase();
Statement stmtArray = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rsArray = stmtArray.executeQuery("select id,classname,classlevel,classupid from web_class");
while( rsArray.next() )
{
String[] item = new String[4];
item[0] = rsArray.getString("id");
item[1] = rsArray.getString("classname");
item[2] = rsArray.getString("classupid");
item[3] = rsArray.getString("classlevel");
vInJsp.addElement( item );
}
rsArray.close();
stmtArray.close();
//----------- 到这里为止,读完了
Statement stmtone = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rsone = stmtone.executeQuery("select * from web_class where classlevel=1");
while( rsone.next() ) {
int idone = rsone.getInt("id");
String nameone = rsone.getString("classname");
if( String.valueOf(idone).equals( request.getParameter("select2") ) )
{
out.println("<option value='" + idone + "' selected>" + nameone + "</option>");
}
else
{
out.println("<option value='" + idone + "'>" + nameone + "</option>");
}
}
rsone.close();
stmtone.close();
%>
</select>
分 类:
<select name="select3" id="select3">
<option value=0 selected>所有分类</option>
<%
Statement stmttwo = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rstwo = stmttwo.executeQuery("select * from web_class where classlevel=2");
while( rstwo.next() ) {
int idtwo = rstwo.getInt("id");
String nametwo = rstwo.getString("classname");
out.println("<option value='" + idtwo + "'>" + nametwo + "</option>");
}
rstwo.close();
stmttwo.close();
disConnectToDatabase();
%>
</select>
</td>
</tr>
<script>
function CarStyleInfo()
{
this.Data = new Array(<%=vInJsp.size()%>);
<% for( int i = 0; i < vInJsp.size(); i ++ ) {
String item[] = (String[])vInJsp.elementAt(i);
%>
this.Data[<%=i%>] = new Array(3);
this.Data[<%=i%>][0] = "<%=item[0]%>";
this.Data[<%=i%>][1] = "<%=item[1]%>";
this.Data[<%=i%>][2] = "<%=item[2]%>";
this.Data[<%=i%>][3] = "<%=item[3]%>";
<%
}
%>
}function changeType()
{
var src = window.event.srcElement;
var series = document.forms[0].select3; series.length = 0;
var o1 = document.createElement("OPTION");
o1.text = "所有分类";
o1.value = "0";
series.add( o1 ); var info = new CarStyleInfo(); if( src.selectedIndex == 0 )
{
for( var i = 0; i < info.Data.length; i ++ )
{
if( info.Data[i][3] == "2" )
{
var op = document.createElement("OPTION");
op.text = info.Data[i][1];
op.value = info.Data[i][0];
series.add( op );
}
}
}
else
{
var selValue = src.value;
for( var i = 0; i < info.Data.length; i ++ )
{
if( info.Data[i][2] == selValue )
{
var op = document.createElement("OPTION");
op.text = info.Data[i][1];
op.value = info.Data[i][0];
series.add( op );
}
}
}
}
</script>
你看看吧,应该可以满足你的需求。