正在做SSH整合的小项目 遇到点小问题

阿鲁ZKP 2014-01-27 02:48:34
做一个查询功能 但是始终不好使 不知道该怎么改
首先给出实现类
	public List<Commodity> all(String cname) {
return factory.getCurrentSession().createQuery("from Commodity c where c.cname like '%"+cname+"%'").list();
}

放入要查询的商品名字,然后返回查询结果list,这个没什么问题。可以遍历输出出来。
然后是action中的代码
	public String commoditySearch() {
ActionContext.getContext().put("commodity",commodityService.all(commodity.getKeyword()));
return "result";
}

getKeyword()是用来接收form中提交的所要查询的关键字,用println实验发现可以接收到
list也可以遍历出来
然后是jsp中的form表单
	<s:form action="currentlist" method="get">
<s:textfield id="keyword" name="commodity.keyword" />
<input type="submit" value="X一下"/>
</s:form>

struts的配置
	<package name="commodity" extends="struts-default">
<action name="currentlist" class="pageAction" method="commoditySearch">
<result name="result">result.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>

result.jsp中用来遍历的代码
	<s:iterator value="#request.commodity">
<s:property value="cid"/>
<s:property value="cname"/>
¥<s:property value="cprice"/><br/>
</s:iterator>

可以正常跳刀result页面 但是#request.commodity没有接受到结果
如果我在action不用getkeyword而直接写"关键字" 然后直接访问http://localhost:8080/SSH_03/currentlist
就可以得到结果
希望高手不吝赐教
...全文
206 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿鲁ZKP 2014-01-28
  • 打赏
  • 举报
回复
引用 10 楼 fw347969680 的回复:
[quote=引用 9 楼 fw347969680 的回复:] [quote=引用 8 楼 fw347969680 的回复:] ActionContext.getContext().put这个方法可能使用不当。参考,http://www.iteye.com/problems/82392。<s:iterator value="#request.commodity">它是默认是去page,request,session,application里面去找的,你用commodity.getKeyword()时,它优先去找commodity的值,发现有值,就取到它,在页面里显示出来,结果显示出来就是错误的值。同理,另一种情况也能解释了。
ActionContext.getContext().put改为ActionContext.getContext().getSession().put 然后页面中的<s:iterator value="#request.commodity">改为session.commodity应该就可以了。[/quote] 或者直接把<s:iterator value="#request.commodity">改为value="#commodity"试试。[/quote] 直接#commodity能取到了 哈哈 谢谢
fw347969680 2014-01-27
  • 打赏
  • 举报
回复
引用 9 楼 fw347969680 的回复:
[quote=引用 8 楼 fw347969680 的回复:] ActionContext.getContext().put这个方法可能使用不当。参考,http://www.iteye.com/problems/82392。<s:iterator value="#request.commodity">它是默认是去page,request,session,application里面去找的,你用commodity.getKeyword()时,它优先去找commodity的值,发现有值,就取到它,在页面里显示出来,结果显示出来就是错误的值。同理,另一种情况也能解释了。
ActionContext.getContext().put改为ActionContext.getContext().getSession().put 然后页面中的<s:iterator value="#request.commodity">改为session.commodity应该就可以了。[/quote] 或者直接把<s:iterator value="#request.commodity">改为value="#commodity"试试。
fw347969680 2014-01-27
  • 打赏
  • 举报
回复
引用 8 楼 fw347969680 的回复:
ActionContext.getContext().put这个方法可能使用不当。参考,http://www.iteye.com/problems/82392。<s:iterator value="#request.commodity">它是默认是去page,request,session,application里面去找的,你用commodity.getKeyword()时,它优先去找commodity的值,发现有值,就取到它,在页面里显示出来,结果显示出来就是错误的值。同理,另一种情况也能解释了。
ActionContext.getContext().put改为ActionContext.getContext().getSession().put 然后页面中的<s:iterator value="#request.commodity">改为session.commodity应该就可以了。
fw347969680 2014-01-27
  • 打赏
  • 举报
回复
ActionContext.getContext().put这个方法可能使用不当。参考,http://www.iteye.com/problems/82392。<s:iterator value="#request.commodity">它是默认是去page,request,session,application里面去找的,你用commodity.getKeyword()时,它优先去找commodity的值,发现有值,就取到它,在页面里显示出来,结果显示出来就是错误的值。同理,另一种情况也能解释了。
zuxianghuang 2014-01-27
  • 打赏
  • 举报
回复
https://img-bbs.csdn.net/upload/201401/27/1390808496_528475.jpg 你这样请求时,,后台打个断点看看 commodity.getKeyword() 是什么 是2014? commodityService.all(commodity.getKeyword())) 有没有取到值
阿鲁ZKP 2014-01-27
  • 打赏
  • 举报
回复
引用 5 楼 fw347969680 的回复:
用println实验发现可以接收到,list也可以遍历出来。你确定?截图。。。



------------------------------------------------------

------------------------------------------------------
fw347969680 2014-01-27
  • 打赏
  • 举报
回复
用println实验发现可以接收到,list也可以遍历出来。你确定?截图。。。
阿鲁ZKP 2014-01-27
  • 打赏
  • 举报
回复
引用 3 楼 ZuxiangHuang 的回复:
你说getKeyword()是用来接收form中提交的所要查询的关键字,用println实验发现可以接收到

如果我在action不用getkeyword而直接写"关键字" 然后直接访问http://localhost:8080/SSH_03/currentlist
就可以得到结果

getKeyword()是用来接收form中提交的所要查询的关键字,用println实验发现可以接收到
比如 commodity.getKeyword() 得到的值是 "a" ;
ActionContext.getContext().put("commodity",commodityService.all(commodity.getKeyword()));
这样没结果?

如果我在action不用getkeyword而直接写"关键字"
ActionContext.getContext().put("commodity",commodityService.all("a"));
这样就有?

对呀 就是直接把字符串写到函数里去 然后直接访问action就能得到内容


如果从另一个页面form给getter传参 然后结果页面里就得不到


zuxianghuang 2014-01-27
  • 打赏
  • 举报
回复
你说getKeyword()是用来接收form中提交的所要查询的关键字,用println实验发现可以接收到 如果我在action不用getkeyword而直接写"关键字" 然后直接访问http://localhost:8080/SSH_03/currentlist 就可以得到结果 getKeyword()是用来接收form中提交的所要查询的关键字,用println实验发现可以接收到 比如 commodity.getKeyword() 得到的值是 "a" ; ActionContext.getContext().put("commodity",commodityService.all(commodity.getKeyword())); 这样没结果? 如果我在action不用getkeyword而直接写"关键字" ActionContext.getContext().put("commodity",commodityService.all("a")); 这样就有?
阿鲁ZKP 2014-01-27
  • 打赏
  • 举报
回复
引用 1 楼 ZuxiangHuang 的回复:
你的问题是什么
我说现在我做的查询实现不了 怎么样修改 或者我哪里写错了
zuxianghuang 2014-01-27
  • 打赏
  • 举报
回复
你的问题是什么

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧