问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jsp页面通过Action里的对象.属性传值 为什么没有穿过去

发布网友 发布时间:2022-11-05 21:26

我来回答

4个回答

热心网友 时间:2023-10-24 01:15

检查页面的属性名字的name是不是跟aciton中定义的一致,如果不一致action就获取不到页面的传值。
例子如下:
表单中有个属性是userId,那么在aciton中接收参数就要这么写:
private String userId;
然后写getter 和 setter 方法,这个值默认就传进去了。

值栈中的Action实例
Struts2框架总是把Action实例放在栈顶。因为Action在值栈中,而值栈又是OGNL中的根,所以引用Action的属性可以省略“#”标记,这也是为什么我们在结果页面中可以直接访问Action的属性的原因。

Struts2中的命名对象
Struts2还提供了一些命名对象,这些对象没有保存在值栈中,而是保存在ActionContext中,因此访问这些对象需要使用“#”标记。这些命名对象都是Map类型。

parameters
用于访问请求参数。如:#parameters['id']或#parameters.id,相当于调用了HttpServletRequest对象的getParameter()方法。
注意,parameters本质上是一个使用HttpServletRequest对象中的请求参数构造的Map对象,一量对象被创建(在调用Action实例之前就已经创建好了),它和HttpServletRequest对象就没有了任何关系。

request
用于访问请求属性。如:#request['user']或#request.user,相当于调用了HttpServletRequest对象的getAttribute()方法。

session
用于访问session属性。如:#session['user']或#session.user,相当于调用了HttpSession对象的getAttribute()方法。

application
用于访问application属性。如:#application['user']或#application.user,相当于调用了ServletContext的getAttribute()方法。

attr
如果PageContext可用,则访问PageContext,否则依次搜索request、session和application对象。

热心网友 时间:2023-10-24 01:16

这里要深入理解下ActionSupport类中对于对象模型的解析。
struts2的标签中的name属性值已经不是简单的属性了,而是 对象.属性,放在值栈对象中进行管理。

你的Action类中的对象叫vUser 而在<s:textfield name="user">
因为struts2对于属性赋值操作是通过IOC方式设定的
你设定的setter方法对属性进行赋值.
所以他会严格寻找对象名叫vUser的对象设定其vuUserName属性,找不到赋值失败就会为null.
而且你要是getter和setter方法命名不是按照驼峰命名法命名,还会报空指针异常(也就是首字母小写第二个单词首字母大写).
建议楼主好好看看源码,和官方的教程。追问

     呵呵 那个是以前的 ,我页面的name是 vUser.实体类的属性

    错误 我已经找出来了 是


少写了一"/"


不过 我刚又遇到一个新问题了 我打开RegisterAction.java就是这样的额 别的都很好

热心网友 时间:2023-10-24 01:16

你没理解Struts2传递值的机制,你想通过jsp页面传值那么你的那个页面中的user.vuUserName是根据你的实体类来写的,你这么写就意味着你必须有个实体类User.java,其中得有个属性名叫vuUserName(其中大小写也必须一致),我想你的那个所谓的VoteUser.java应该就是这个User.java类,但是这名字得一致
为什么要这样呢,?这就是Struts2的IOC机制,也就是像Spring的IOC一样,在通过Struts2提交表单数据到Action时Struts2实际上给你new了一个实体类的对象,然后通过你Action中的set方法给你这个对象赋值了,这时候就可以了,这就是为什么要一致,并且要有实体类的getset方法的原因,希望对你有帮助

热心网友 时间:2023-10-24 01:17

...JSP里面的名称叫user。
action里面的变量叫vUser,你叫它怎么传值进去阿 ,要保准jsp和action的名称相同阿,然后再重新生成setter和getter对象。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... struts2用session保存用户信息后,在跳转页面用 struts2中# %{} ${}等的作用 值栈为什么要用栈结构 struts2标签中在jsp页面如何给值栈中的list和map赋值 struts2中怎么我压入值栈中的list显示为空? 值栈是什么意思。 张北天路15.16号天气 草原天路8月13号十四号的天气 旧门翻新,需要先打磨下吗? 如何翻新旧家具和木门 为什么闪闪说与breasker同为半神 那些农人自己都不爱吃的「梨」,是怎么上架的呢? 种梨是什么意思? 高速没办理etc可以通过吗? 夏日养生重在养阳,记住4个要点,健康一整夏 echo回声金币又什么用? 我的世界怎么搞金币的声音 夏天如何缓解租房顶楼炎热 苹果手机里怎么备份软件到icloud 甲状腺右侧叶上缘强光团声像(大小6x5㎜,结甲肿可能,其它不能排外)请问是什么病,严重吗? 新手求好心人教篮球打法及训练方法 风湿病的人三伏天能不能穿裙子 举例。说说身边生活中有哪些不守规矩,甚至违反法纪的现象如何杜绝? 卖石头的人自己不参与赌石是什么原因? 为什么很多卖石头的人自己不赌石? 鱼怎么处理 鱼怎么做好吃 猎霸一号头灯X9不亮了怎么修 柳叶马鞭草 属于夏天的浪漫 去大黑河看马鞭草有公交车去吗 解锁沙家浜隐秘玩法:捕鱼打菜籽漫游花海,芦苇荡中享船宴 网络用语上阳炎是什么意思 阳炎日是什么意思? 关于目隠都市的演绎者这部动漫为什么网上都会出现阳炎这个词,阳炎又是什么,为什么叫阳炎 大年初一晚上睡觉开灯还是关灯招财? 我是1996年大年初一生的财运不好怎么办 什么叫入赘 长赤到安徽亳州怎么走 长赤镇圆通快递在哪里 四川巴中南江县长赤镇哪有快递 现在成都到长赤怎么坐车?