JSF级联菜单,不能提交值

vtudiv 2008-04-03 10:20:24
RT;

第一级
<h:selectOneMenu value="#{DeviceStatBacking.queryDept}" onchange="placeChanged();" styleClass="searchtxt">
<f:selectItem itemLabel="11" itemValue="11"></f:selectItem>
<f:selectItem itemLabel="12" itemValue="12"></f:selectItem>
</h:selectOneMenu>
第二级
<h:selectOneMenu id="tempId" value="#{DeviceStatBacking.queryComp}" styleClass="searchtxt" readonly="false">
<f:selectItem itemLabel="21" itemValue="21"></f:selectItem>
<f:selectItem itemLabel="22" itemValue="22"></f:selectItem>
</h:selectOneMenu>
提交:
<h:commandButton value="查询" action="#{DeviceStatBacking.queryStat}" styleClass="butt" onclick="fuc();"></h:commandButton>
MB的queryStat():
public void queryStat()
{
System.out.println(this.queryComp);
System.out.println(this.queryComp1);
}
JS:
function placeChanged()
{
try
{

var sel1=document.getElementById("query:tempId");
var opt1=document.createElement("option");
opt1.innerHTML="23";
opt1.value="23";
sel1.appendChild(opt1);
}
catch(e)
{
alert(e);
}
}
function fuc()
{
alert(document.getElementById("query:tempId").value);

}

触发第一级的onchange事件后新OPTION(value=23)能添加到页面中,选择第二级的原有项(value=21或22)fuc函数和queryStat均正常.只当选择第二级的新项(value=23)时,fuc正常弹出'23',而queryStat无任何输出.
谢谢留言!!!
...全文
238 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiyikongjian8382 2010-08-17
  • 打赏
  • 举报
回复
ddd
vtudiv 2008-04-09
  • 打赏
  • 举报
回复
谢谢SwjComber!~
我会用JSP+AJAX,但不会用JSF+AJAX.....
海边岩石 2008-04-08
  • 打赏
  • 举报
回复
给你一个ajax的做参考吧
<script language="JavaScript" type="text/JavaScript">
//创建XMLHttpRequest对象
function createXMLHttpRequest() {
if(window.XMLHttpRequest) { //Mozilla 浏览器
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE浏览器
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
// 处理返回信息函数
function processResponse() {

if (XMLHttpReq.readyState == 4) { // 判断对象状态
// alert(XMLHttpReq.status);
if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
DisplayHot();

} else { //页面不正常
window.alert("您所请求的页面有异常。");
}
}

}
function DisplayHot() {
var count = XMLHttpReq.responseText;
var sel = document.getElementById("worth");
sel.options.length=0;
var arrstr = new Array();
arrstr = count.split(",");
//开始构建新的Select.
for(var i=0;i <arrstr.length;i++)
{
sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i]);
}
}
function chkWorth(){
var gameName = document.getElementById("gameName").value;
//alert(gameName);
createXMLHttpRequest();
var url = "AddWorthServlet?gameName="+gameName;
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
XMLHttpReq.send(null); // 发送请求
}
</script>
jsp页面
<select id="gameName" name="gameName" size="1" onchange="chkWorth()">
<option ......>游戏 </option>
</select>
<select id="worth" name="worth" size="1">
</select>
servlet
public static String ISOToInnerCode(String str) {
if (str == null)
return null;
try {
str = (new String(str.getBytes("ISO-8859-1"), "gbk")).trim();
} catch (Exception ex) {
}
return str;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain; charset=gb2312");
response.setHeader("Cache-Control","no-cache");
PrintWriter out = response.getWriter();
String gameName = ISOToInnerCode(request.getParameter("gameName").trim());
// System.out.println(gameName);
ManagerDao mDao = new ManagerDao();
String worths = mDao.getWorthByGame(gameName);
if(worths.equals("") | | worths.equals(" ")){
worths = "面额";
}else{
worths = "面额" + "," + worths;
}
out.println(worths);
out.close();
}
vtudiv 2008-04-07
  • 打赏
  • 举报
回复
我用纯JSF做了一个,要刷新页面,还要把BACKING BEAN设成SESSION的.觉得很差劲.
vtudiv 2008-04-06
  • 打赏
  • 举报
回复
可是有那么多ajax FOR JSF的框架,它们是怎么做到的?
liujie616 2008-04-06
  • 打赏
  • 举报
回复
不会,只会JSP+AJAX的````
zqpsswh 2008-04-05
  • 打赏
  • 举报
回复
JSF里 用JS方法修改参数是不顶用的 你必须把值传到后台

在selectItem设置方法里添加新的选项

不过这样需要刷新界面,速度上慢很多

所以我一般这种情况都直接采用JSP方法

JSP+JSF是不错的选择

vtudiv 2008-04-04
  • 打赏
  • 举报
回复
或者给我一份JSF级联下拉列表的其它实现也可以,我实在找不到了,谢谢~~~

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧