日期:2014-05-19  浏览次数:20759 次

jQeury+SSH2架构的传值问题
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来,方便简捷
------解决方案--------------------
探讨
呵呵,不好意思,是有点罗嗦了!
我如今的想法是,请求后台程序,后台JAVA程序把返回值封装成xml格式,传到前台,前台JS在解析xml,得到相应的值.
问题就出来了:

jQuery中得到的是一个httpXmlRequest对象,如何在后台java程序中封装一个xml呢?

以什么方式传到前台?

前台jQuery如何得到这个xml?

------解决方案--------------------
唐元舟 非常好,加分
------解决方案--------------------
贴一段我写的吧 呵呵,其中用了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>