我已经将注释配置为以文本形式返回值。但是它给了我错误:could not find action or result
.
控制台错误:
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;
}
}
修改动作名称,即@Action
注释中的value
属性为value="part"
。!
是URL中用于分隔操作名和方法名的特殊字符。但不是在动作映射中。通过在动作名称映射中添加!
,您可以使正在搜索包含没有!
的名称的动作配置的动作映射器无法访问您的动作。这个字符分隔了操作名和方法名,所以在操作配置中它是不合适的。
顺便说一句,在构造URL并且打开DMI时(默认是打开的),那么最好使用method
属性到url
或submit
标记,并且映射到您的操作的正确URL将在JSP呈现(处理结果)之后创建。您可以检查输出到浏览器的HTML,以查看页面的HTML源代码。您可能会发现映射到(非默认)方法的操作的前缀是!
符号。您可以显式地或通过标记将方法添加到操作URL中,以执行方法,而不是与操作映射。
如果您正在使用DMI,请在类级别应用@Action
,并让DMI完成其余的工作。
如果你在操作级别注释,声明一个唯一的操作名,不要使用DMI。
(或其语法;这是令人困惑。)