struts2 和 ajax 用到了同一个action。

struts2 和 ajax 用到了同一个action,这样一个请求是需要跳转(struts),而另外一个请求是不需要跳转的(ajax),那我在struts.xml 中配置的时候,可不可以只配置一个action,这个action集成了 struts2 和 ajax 的处理请求 。我试过了,没有通过,不晓得是jar的原因,还是其他的原因,谢谢了。【当然配置两个包,而一个action就需要配置两次,当然是可以的,我想知配置一个action,但是却有处理ajax请求和struts请求的功能】大牛们,给力呀。高分。

第1个回答  2012-09-01
你好,既然它们逻辑上有相似,而业务流程不同,那么你这样的设计就是不合理的,说明你重构的不好,你可以将相同的逻辑处理抽象到一个方法中,然后配置不同的action,调用那个方法之后,加上不同的业务处理。否则你的代码可读性不好,后期维护起来也困难。追问

师兄 ,我现在才大二,你能说的详细点吗?我意思是 我只用一个action 来配置 处理 ajax请求和 struts的请求。。。“你可以将相同的逻辑处理抽象到一个方法中,然后配置不同的action,调用那个方法之后,加上不同的业务处理” 这个应该是配置了两个actin了吧。还请赐教。谢谢。

追答

你好,你struts学完后应该知道,可以直接调用一个action中的不同方法。你写两个不一样的方法,每个方法封装各自的业务,就可以了。

追问

看看 我回复给楼上的。

第2个回答  2012-09-01
这样是可以的,比如登陆的时候,登录成功进入另一个jsp,不成功,把信息返回到登录界面.
在package里面的extends="json-default",json-default也继承自struts-default,这样result的type属性就可以直接写json了.
进入另一个jsp页面的,type属性可不写,默认是请求转发,也可换成重定向等,但是type属性换成json,那就表示不能返回一个视图了,它会把action中有get属性的成员变量封装起来返回给原来的视图.所以type="json" 并且extends="json-default"就行了,注意导入strus2-json的jar包追问

这个我都试过了,好像不行。而且如果action 里面集成了处理ajax请求的话,当我们再提交 struts请求到同一个action的话,该action是不访问不到 ServletAPI 中传递的数据的。所以这也是一个特别急人的问题。无奈,我在struts.xml 中定义了两个action处理不同的逻辑请求。但是心中有疑惑,总觉得一个action也可以。但是就是没有找到办法。。师兄,你该action无法访问ServletAPI 里的数据,怎么看啊 ?

本回答被网友采纳
第3个回答  2012-09-13
sturts2可以在struts.xml配置result转页面,ajax只能在前台配置转页面!!!
第4个回答  2012-09-14
按理说是没问题的啊,只是返回内型不一样吧?

struts2 和 ajax 用到了同一个action。
你好,既然它们逻辑上有相似,而业务流程不同,那么你这样的设计就是不合理的,说明你重构的不好,你可以将相同的逻辑处理抽象到一个方法中,然后配置不同的action,调用那个方法之后,加上不同的业务处理。否则你的代码可读性不好,后期维护起来也困难。

如何把Ajax应用到Struts2验证上来?要详细的讲解哦。
比如,你原来用struts验证是输入用户名,密码,然后点提交按钮,跳转到一个action,这个action里面查询数据库,验证是否正确,再根据验证结果来跳转到成功或者错误页面。而现在你用了ajax之后,在页面上给提交按钮添加onclick方法,这个方法里面通过js获得用户的输入,再通过js来将用户的输入发送到你后台验证的c...

struts2 中 Ajax发送请求到action,action中的json格式的字符串如何返...
这点你可以用一层servise来代替,如:action--->servise--->dao--->db这样就是把action里面实现的功能放到servies层去实现,这样就为了防止Ajax的请求

struts2中,jsp页面通过ajax访问了action,action如何返回一个json数据给...
<action name="seekcardAction" class="seekcardAction" method="returnResult"> <result type="json" \/> \/\/注意返回类型 <\/action>

...ajax中的url 能不能写成像xxx ! xxx.action 这种形式,就是带个感叹...
xxx!xxx.action是可以的。这是struts2的DMI调用方式,!号前面的“xxx”是action的名字,后面的“xxx”是action中的方法名。请检查Action名称、方法等配置是否正确,直接在浏览器的地址栏中输入此URL,看看是否还报404错误

struts2 使用ajax 遇到问题: struts2 的 result 有跳转页面,那就会和...
Action方法里面return null,但是需要将你的数据以流的方式返回到页面,这就需要用到Jqurey ajax里面的返回结果,如json、text、xml等,如果是text那么直接将数据加入到输入流,如果是json则需要将数据封装成json在加入到输入流,代码如下 HttpServletResponse response = ServletActionContext.getResponse();res...

前台和后台都有同样的功能,能使用同一个action(struts2)吗?_百度...
这个问题真心好解决。你在前台和后台是用form提交,把action名字取不一样,举个简单例子,前台取showAllTopic1,后台取showAllTopic2 在struts2中struts.xml中,分别配置 前台配置 <action name="showAllTopic1" class="showAllTopicAction" method ="showAllTopic"> <result name="success">\/showAll...

如何让struts2的action只执行,不跳转?
如果光看你这个问题的题目,有两个方法,第一个,用ajax,页面加载完成之后调用一个action,让action的返回页里面包含一个json或者xml数据,原页面调用这个页面的返回结果,第二个,写一个html页面,里面用js跳转来执行action 看了你问题的内容感觉有点迷糊了,不知道你的问题到底是什么,在详细说一下 ...

关于struts2,使用jquery发送ajax请求,返回json字符串的问题
aysnc:false, 下面加一句 dataType:"json", 试一下。你的配置文件没错,其实不用这么麻烦,JSONArray array = JSONArray.fromObject(smallTypes);System.out.println(array.toString());this.result = array.toString();这三句代码不需要。在action中,只要有get和set方法,值都能传到前台。

struts2怎么处理ajax请求
所以,在Struts 2中使用Ajax,Action一般就不会调用一个jsp视图来显示了(如果Ajax请求内容是页面的一部分也可能调用jsp视图),而是通过一些其他的方式。下面介绍了三种方法,用于Action实现Ajax请求。方法1:依赖Servlet API [java] view plain copy public class HelloAction extends ActionSupport { public...

相似回答
大家正在搜