关于STRUTS2的传值问题?

关于STRUTS2的传值问题?,第1张

回xiaoqulai,我早就把scope的设置改为了prototype,但是问题依旧,可能是我眼拙,调试时看不出什么问题,不知道还有没有什么建议
--------------------
你的问题我下面已经说了。
你的值出现累加就是因为你的三次请求的三个线程访问了同一个对象实力。这说明两个可能:
1你的action对象是单例的——尽管你一再强调你的配置文件使用的是prototype。请检查以下你的配置文件是否有错。比如有没有可能使用了某些插件,覆盖了你的设置。
2你的标签使用不当,建议你了解<s:select />的每一个属性,也许你还需要在多一个属性没有写。
我不知道你的问题在哪,但我可以告诉你如何解决这个问题:就是在<s:select />中加一个属性value=""就可以了,假如有value这个属性的话。
你还可以multiple="false"
如果你的action是单例的,那么里面的定义的变量就会被多个线程共享。
你前后提交的两个请求是不同的线程,它们会在变量中累计,因此,你的第二次请求会加上第一次的请求。
所以,我可以肯定的告诉你,你的问题是你的Action不是原子的,而是单例的。
所以第一,你一定要将action配置为prototype。
如果还出现这个问题,其实是可以通过调试找出问题的。
我们没有必要对一个技术太过深究,struts2确实很好,但并不代表你需要使用它的一切,所以你如果找不出问题来,就别用它的标签好了。建议使用sun官方的jstl标签加el表达式。
另,不懂就别到这乱说,搞些错误的东西来误导人哈!!
--------------------------------------------
laogao3232 说:
这个是谁教你的啊!
action里怎么能写
private String str;
这个说法不正确的,我们不仅要这么些,而且还鼓励这么写,我们要去掉他娘的from对象。
struts 20之前的版本最大败笔就是form对象和struts标签,form对象严重影响了我们优良的程序设计,通过DTO设计模式,我们原本可以直接将对象传递到jsp,因为有了一个form,我们不得不将对象一个个变成form,再传过去。
struts标签更是烂,生成的form表单,连ID属性都没有,大家知道,ID属性是DOM树中唯一的引用标识,我们很多客户端的JS和CSS都需要ID!!!
struts20的标签大有改进,但还是不够灵活。
总值,struts2 以前的版本不允许是因为action中的变量是多线程共享的,但struts2 action对象是是可以配置为原子的prototype,就没问题了。
楼主的问题在于还没有理解struts2的精髓,就算这个问题解决了,还会碰到其它很多的问题。建议先理清struts2的原理及流程。

1、jsp页面中textfield的value写成studentbjmc studentxh的形式,把你想传的值放在textfield的value属性中,而不是写在中间
2、在action中定义一个student的私有的成员变量,添加get和set方法。
3、在student中直接使用这个student就可以了。
你上面的写法 首先前台参数没有传递到后台,其次你的student是自己new出来的。里面根本没有值。
目测你的代码一场出现在这一行:if(bjmcequal(s1))
因为student里没有值,所有bjmc为null,所以这儿报空指针异常了。

JSP
里requestsetAttribute("test1","test1")
设置的值
在struts2的
action中能得到struts2
中必须设置setAttribute("test1","test1")

跳转的另一个jsp页面
才能得到值


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13395662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存