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