2013-06-19 47 views
-1

我已经配置了注释以将值作为文本返回。但它给了我错误:无法找到行动或结果。Struts 2 - 找不到动作或结果

控制台错误:

org.apache.struts2.dispatcher.Dispatcher - Could not find action or result 
/part!finder.xhtml 
No result defined for action action.PartAction and result success 

译注:

@Action(value="part!finder", results = { 
    @Result(name="SUCCESS", type="stream", params = {"contentType", "text/html", "inputName", "inputStream"}), 
    @Result(name="success", type="stream", params = {"contentType", "text/html", "inputName", "inputStream"}) 
}) 
public String finder() { 
    try { 
    inputStream = new ByteArrayInputStream(finder1().getBytes()); 
    } 
    catch(Exception e) { } 
    return SUCCESS; 
    } 
} 
+0

你正在尝试执行的'action.PartAction'没有被定义在任何地方...... – Armaggedon

+0

没有action.PartAction是类路径...就像com.aa.action.PartAction和PartAction是动作类名。 – user2444474

回答

0

如果您使用DMI,在级别应用@Action,并让DMI做休息。

如果您在操作级别进行注释,请声明一个唯一的操作名称并且不要使用DMI。

(或者它的语法;它混淆)

1

更改动作的名称,也就是在@Action注释value="part"一个value属性。 !是一个特殊字符,用于在url中分隔动作名称和方法名称。但不是在动作映射中。通过在动作名称映射中添加!,可以使动作无法访问到动作映射器,该动作映射器正在搜索包含名称的动作配置,但不包括!。这个char分割动作名称和方法名称,所以它在你的动作配置中是不恰当的映射。

BTW,建立网址时,你必须DMI开启(这是默认开启),然后更好地使用method属性urlsubmit标签并映射到你的行动后,JSP是将要创建的正确网址呈现(结果被处理)。您可以检查输出到浏览器的HTML以查看页面的源HTML代码。你可能会发现你映射到(不是默认)方法的动作的前缀是!符号。您可以显式或通过标签将方法添加到动作url中,以执行除动作映射之外的方法。

+0

谢谢罗马。这是很好的信息。但是这个不是常规插件在这里使用了代码隐藏插件。@ Action(value =“part”,results = { \t \t @Result(name =“SUCCESS”,type =“stream”,params = {“contentType ”,‘text/html的’,‘inputName’,‘的inputStream’}) \t \t \t \t \t}) – user2444474

+0

@ user2444474您应该编辑的问题,并说,你正在使用代码隐藏插件,但它的过时,但脂肪酶至少会了解它。它使用与约定插件具有相同名称的不同注释以及不同的属性。真的很难知道。 –