日期:2014-05-18  浏览次数:20815 次

struts中下拉列表的onchang事件执行actiong的用法100分
我在做项目中遇到的的情况是   是用SSH框架做的    
一个页面有2个下拉列表框     一级类别的二级类别   现在是要通过选择一级类别而获得
相应的二级类别   我的想法是在下拉列表的onchang事件中调用一个action获得一个
二级类别的list,但我试了onchang= "/**.do "这样执行不了     页面的提示错误是onchang= "/**.do "少了个“/”符号   我改城onchang= "//**.do "后就没这个页面错误
但我们都知道虽然没错误但action是绝对执行不了   所以这样也不行
我又想了一个方法绝对这个问题   但我绝对这个方法还是感觉不怎么好
大家可以看看     如果大家有更好的方法可以提出来         共同进步    
这是javascript函数                        
function   getname{
          this.frm1.select.options[..]     省//这行代码是获得select里面被选种的option的value
//下面是调用action关键代码了
window.open( "你要调用的action如:???.do   ,并可以你获得传递参数 ");
}
好调用action没问题了
下面是也面的struts标签
当然还有些逻辑标签用于判断onetype,twotype存在的我就没写了
onetype,twotype这2个对象集合当然都是从数据库里读出来的   不是死的数组
我主要写主要代码
<html:select   property= "select "   onchang= "retrun   getname(); ">
        <html:option   name= "onetype "property= "onetypename "> </html:option>          
</html:select>

<html:select   property= "select ">
        <html:option   name= "twotype "property= "twotypename "> </html:option>          
</html:select>
这个功能我用aps.net写只用了10分钟
在asp.net里面只要在页面加栽的时候判断是否为回发页面并在下拉列表里的onchang事件从数据库里读出数据就可以了,注意asp.net的控件他自己自带事件的  


------解决方案--------------------
可以用javascript来处理
function change(){
operation = "change "; //此处的opertion要在页面隐藏一下,可在ActionForm中定义
}


页面中 onchang=“function change()”

action中
if(opertaion.equals( "change ")){
得到你的list,然后用request.setAttribute()返回给页面就OK了
}
------解决方案--------------------
不对吧
当onchang事件触发的时候你根本没调用action啊
你只是返回了一参数opertaion啊?
function change(){
operation = "change ";
document.forms[0].submit(); //此处的opertion要在页面隐藏一下,可在ActionForm中定义
}
onchang事件触发后又没让表单执行他的actiong= "??.do " ,只执行了你自己写的JS函数而已吧?

你可以提交表单啊,得到二及页面的数据再返回这个页面。
------解决方案--------------------
document.frm1.action = "/action.do ";
document.StartForm.submit();