我在从返回的 JSP 中的 struts 2 操作访问方法时遇到问题。据我了解,如果我有一个看起来像这样的动作:
public class HomeAction {
public String execute() {
return "SUCCESS";
}
public String getSomething() {
return "somethh";
}
}
然后从 JSP 我应该能够调用
${something}
并返回 "somethh"
。但这似乎不能正常工作。有没有我可能错过的明显配置?我使用的是 struts 2、spring 3.1 和 tomcat 7。
我不确定你想要做什么,因为你所要求的非常抽象,最好显示你的 JSP 页面,你正在尝试做你所描述的事情,这可以为其他人提供更好的图片。
您需要告诉S2您希望它调用哪个方法,如果您没有定义任何方法,则默认为
execute()
。
在你的情况下,你可以通过使用配置文件(struts.xml)或通过注释来告诉S2你想要调用哪个方法
<action name="default" class="tutorial.HomeAction">
<result>Welcome.jsp</result>
</action>
<action name="somethh" class="tutorial.HomeAction" method=getSomethh>
<result>Welcome.jsp</result>
</action>
这里您必须配置不同的操作名称,例如
<s:url value="default.action"/> and <s:url value="somethh.action"/>
如果您想要相同的操作名称,但想要重定向到操作类的不同方法,您也可以在
<s:url>
中配置方法名称
<s:url value="generic.action" method="getSomethh">
在上面的示例中,您已经通过标签告诉 S2 您要调用操作类的哪个方法,以及您需要在 struts.xml 文件中配置它们
事实证明,环境问题导致了支柱行为异常。它按照我的预期工作,对于这个模糊的问题表示歉意。
你不能直接从jsp文件中调用方法。如果你这样做,那么为什么mvc.Struts2是一个非常简单的框架。你可以配置方法和类strutsconfig.xml。并用一个动作来映射它。 实例变量可以直接在jsp中访问。例如,如果你有一个方法
public class ABCAction extends ActionSupport{
public String getNames(){
nameslist=dao.getNamelist();
retrun "success";
}
//getters and setters for namelist
public setNamesList(List nameslist){
this.nameslist-namelist;
}
}
public List getNames(){
return this.nameslist;
}
}
您可以直接在jsp中访问namelist--