哥们,你的理解有很大问题呀
不 jsp 跳到 action 取值
而是你应该访问action 然后返回你的jsp才能有值。
帮你梳理一下,什么是访问吧,呵呵
首先,浏览器访问一个地址,被你的servlet 获取,至于是不是访问jsp 还是访问action这个一般看你配置文件怎么配了,当然不会有人将action的标志写为 “jsp”,一般写.action 或者.do
那么如果你的拦截器也没有拦截jsp的话,(不明白拦截器可以忽略本段),会根据你的后缀名判断你要访问什么。
其实不管你访问什么,都可以认为最后通过 response 返回了一个字符串,返回文件不算。
那么这个字符串的构成不外乎有几种
1,全部静态,一般是 html,即直接指向一个静态页面,当然也可以通过actiong 转向一个html
2,全部动态,由java拼接一个字符串,返回,ajax请求一般是这种情况。当然,若全天是一个submit式提交,希望返回一个页面,那么你的字符串将被当作html代码展示。
3,半动态,也就是jsp方式,jsp中的html部分是静态不动的,其他jsp标签,如你写的s标签(s标签是strut的标签,说白了是jsp标签的一种),jsp标签会根据他的定义执行对应的java代码进行拼装。然后将拼装好的部分与原来的html部分结合,返回给浏览器。
无论是哪种,浏览器拿到的都是 静态的,也就是浏览器并不知道你后台做了什么,只是拿到一个已经拼装好了的html,(这个html原来可能就不需要拼装对应第一种,全部都是拼装的对应第二种,一半是拼装的对应第三种)
但是你直接访问jsp的问题是,当前sesson中没有你写的pages.pageList,所以啥也没有。
所以要在页面上显示列表有2种方案,这两种方案都很常见。
1,访问一个action,action先通过java取得值,将值付给某些变量,对你的来说就是pages.pageList,再将请求重定向到你的jsp,那么jsp中s标签就被拼装成你要值返回了前台。
页面上就有 表格了。
2,访问一个jsp,而这个jsp中没有你现在写的s标签,但是当jsp全部加载完成后,通过ajax向后台申请数据,再通过js(javascript)修改你前台的页面,展示出你要的结果,
随着这些年的发展,第二种方案越来越流行,其实怎么用还是要看自己。
struts2中提交action的方法:
就要在页面上修改 form元素的action属性
例如:
form1.action = "doSomethingAction.action"
form1.submit;
你应该是直接访问action,通过遍历方法获取你的数据,转向到jsp进行数据展示吧