我在返回的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。
答案 0 :(得分:0)
我不确定你要做什么,因为你所要求的是非常抽象的,并且总是更好地展示你正在尝试的JSP页面o做你所描述的事情,这可以给出更好的图片。其他
你需要告诉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文件中配置它们所需的全部内容
答案 1 :(得分:0)
原来一个环境问题导致struts行为异常。它按照我的预期工作,为模糊的问题道歉。
答案 2 :(得分:-1)
你不能直接从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中的名单 -