jQeury+SSH2架构的传值问题:
小弟现在在做一个前台系统,使用了stuts2.1.6+spring2.5.6+hibernate3.3.1框架集,这个框架已经完全融合,并且已经可以使用。
现在要写一个菜单,需要从数据库动态加载,准备运用dTree+js+jQurey实现,菜单也加载的时候自动调用一个jQury的ajax方法,后台查询,然后把菜单信息用list传递到jsp页面中,在用dTree实现菜单的建立
现在遇到一个问题,查询了很多的资料,都没能理解:
1、jQeury在调用后台程序的时候,如何把值传到前台jsp页面呢?
(注,我运用了ssh框架,在Action中应该如何传值?如果还是用excuted方法,跳转页面,这样不是就失去异步调用的意义了?)
2、由于对jQuery的方法不是很精通,API中也说的不是很详细,它是以什么方式接受的后台值?又需要如何应用呢?
衍生问题:我利用了session存放用户信息,在刷新菜单的时候,需要对用户进行权限判断,然后针对不同的用户,显示不同的菜单
由于我用到了frameset设置框架,每个frame中返回的页面都不相同,如何保证框架集中的所有jsp页面都有session信息呢?
以下是我的框架代码:
<frameset rows="15%,30px,*" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="page/head.html" name="topFrame" noresize="noresize" id="topFrame" title="topFrame"/>
<frame src="page/navigation.html" name="infoFrame" noresize="noresize" id="infoFrame" title="infoFrame" />
<frameset rows="*" cols="15%,*" framespacing="0" frameborder=1 border="1" >
<frame src="page/treeset.jsp" name="leftFrame" noresize="noresize" id="leftFrame" title="leftFrame" />
<frame src="page/blank.html" name="mainFrame" id="mainFrame" title="mainFrame"/>
</frameset>
</frameset>
在infoFrame中有一个功能按钮栏,点击不同的按钮,需要在leftFrame中的页面里显示不同的菜单,应该如何实现呢?
------解决方案--------------------
<package name= "struts2.1 " extends= "json-default ">
<action name= "getGsonAction " class= "com.xml.action.GetGsonAction ">
这里面的result可以不写
</action>
</package>
action重点execute方法 ruturn null;
大概方法 需要引入gson-1.4.jar 当然你自己使用的是什么JSON根据你的需要导入JAR
Gson gson = new Gson();
String result = gson.toJson(obj);
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType( "application/json; charset=utf-8 ");
response.setHeader( "Cache-Control ", "no-cache ");
PrintWriter out = response.getWriter();
out.print(result);
System.out.println( "result = " + result);
out.flush();
out.close();
return null;
------解决方案--------------------
既然你想每个jsp都有session信息,建议你用一个filter来,方便简捷
------解决方案--------------------
------解决方案--------------------
唐元舟 非常好,加分
------解决方案--------------------
贴一段我写的吧 呵呵,其中用了json的插件,这个你可以去网上下载,但是好像只支持到2.1.6,不支持最新的 struts2.1.8,其实你后台就和平时一样就行了,只要你要返回到前台的页面的属性有对应的get和set方法就行了。。不用专门处理。后台execute()方法就行,当然你也可以该成其他方法,前台指定就行。。
其中result的name就是后台return的字符串,type一定要用json。
- XML code
<package name="ajaxUser" extends="json-default"> <action name="register" class="com.test.user.RegisterAction"> <result name="input">/user/register.jsp</result> <result name="success">/user/register_message.jsp</result> <result name="myJson" type="json"></result> </action> </package>