tczengjin

BlogJava 首页 新随笔 联系 聚合 管理
  2 Posts :: 0 Stories :: 9 Comments :: 0 Trackbacks

问题:No result defined for action cn.bbs.nhpop.web.action.ReplyTopic Action and result input 错误

意思是说没定义input的跳转结果.

    @Override
    
public String execute() throws Exception {
        topic 
= topicService.getTopic(topicId);
        reply.setTopic(topic);
        replyService.replyTopic(reply);
        
return this.SUCCESS;
    }

原因:我的cn.bbs.nhpop.web.action.ReplyTopic Action execute方法返回SUCCESS,但是实际运行中出现了错误(抛了异常),Action并没有返回SUCCESS而是返回INPUT(Action出现错误时默认的返回值),而我的struts.xml配置文件中并没有定义与INPUT对应的Result

        <action name="replyTopic"
            class
="cn.bbs.nhpop.web.action.ReplyTopic">
            
<result name="success" type="chain">
                
<param name="actionName">listTopicsDetails</param>
            
</result>
        
</action>

解决方法:你可以添加一个与INPUT对应的Result或者解决Action方法实际运行中的异常。

我的Action到底抛了个什么异常呢?

        <s:form action="replyTopic">
            
<s:hidden name="topicId" value="%{topicId}"></s:hidden>
<%--            <s:param name="topicId" value="%{topicId}"></s:param>--%>

</s:form>
这是我的reply.jsp,开始我使用<s:param></s:param>传topicId,想当然的认为可以与<s:form></s:form>合用传参,导致replyTopic Action无法获取到topicId的值
    @Override
    
public String execute() throws Exception {
        topic 
= topicService.getTopic(topicId);
        reply.setTopic(topic);
        replyService.replyTopic(reply);
        
return this.SUCCESS;
    }
topic为null抛异常。(<s:url action=""><s:param></s:param></s:url>是可以这样传参的,但与<s:form></s:form>不行)
后来用<s:hidden></s:hidden>代替解决。另外
<s:hidden name="topicId" value="topicId"></s:hidden>
value="%{topicId}"切不可省去%{}否则Action中的topicId的值为字符串为"topicId"而不是我希望的int值1,%{topicId}相当于
<s:property value="topicId"/>
你可以使用%{}或嵌套<s:property>标签。struts2标签的属性可以接受一个字符串的值的时候请大家尤其注意,必须使用%{} 或<s:property>才会是你想要的值。比如:
<s:hidden name="topicId" value="%{topicId}"></s:hidden>


            
<s:url id="toReply" action="toReply">
                
<s:param name="topicId" value="topicId"></s:param>
            
</s:url>

            
<tr>
                
<td height="18" colspan="2">
                    
&nbsp;
                    
<s:a href="%{toReply}">回复 </s:a> &nbsp;
                
</td>
            
</tr>
我怎么感觉struts2的文档把%{}作用说反了,哪为高手能读读文档看是否我理解错了没struts2 %{}使用方法
posted on 2007-12-21 00:54 爪哇园主 阅读(3343) 评论(3)  编辑  收藏

Feedback

# re: 我遇到的Struts2的几个问题一 2007-12-21 18:01 黑灵
%{}的意思是把其中的字符串作为ognl表达式.  回复  更多评论
  

# re: 我遇到的Struts2的几个问题一[未登录] 2008-05-13 18:14 alex
请教楼主:
下面是我的代码,可是取不到值,换成%{}是一样没结果,请问是什么原因,该怎么做?谢谢。
<s:hidden name="staffID" value="#request.staffID"></s:hidden>  回复  更多评论
  

# re: 我遇到的Struts2的几个问题一 2009-01-14 16:33 wjl1174
@alex
#request.staffID==request.getAttribute("staffID");

  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: