Struts 2 - 找不到动作或结果

时间:2013-06-19 12:16:42

标签: java struts2 actionresult dmi struts2-codebehind-plugin

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

控制台错误:

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;
  }
}

2 个答案:

答案 0 :(得分:1)

将操作名称(value注释中的@Action属性更改为value="part"!是一个特殊字符,用于分隔网址中的操作名称和方法名称。但不是在动作映射中。通过在操作名称映射中添加!,您可以使操作映射器无法访问该操作映射器,该操作映射器正在搜索包含不包含!的名称的操作配置。此char将拆分操作名称和方法名称,因此在操作配置中进行映射是不合适的。

顺便说一句,在构建网址时你打开了DMI(默认打开了),那么最好使用method属性urlsubmit标记以及正确的网址将在呈现JSP(处理结果)之后创建映射到您的操作。您可以检查输出到浏览器的HTML,以查看该页面的源HTML代码。并且您可能会发现映射到(非默认)方法的操作以!符号为前缀。您可以显式地或通过标签将方法添加到操作URL以执行除了与操作映射之外的方法。

答案 1 :(得分:0)

如果您正在使用DMI,请在级别应用@Action,然后让DMI完成其余工作。

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

(或者它的语法;令人困惑。)