2012-04-30 55 views
1

我在返回的JSP中从我的struts 2动作访问方法时遇到问题。据我了解,如果我有一个看起来像这样的动作:从JSP访问struts动作方法

public class HomeAction { 
    public String execute() { 
     return "SUCCESS"; 
    } 

    public String getSomething() { 
     return "somethh"; 
    } 
} 

然后从JSP我应该能够调用${something}并获得"somethh"返回。然而,这似乎不能正常工作。是否有任何明显的配置,我可能错过了这个?我正在使用struts 2,spring 3.1和tomcat 7.

回答

-1

您不能直接从jsp文件中调用方法,如果您这样做,那么为什么mvc.Struts2是一个非常简单的框架。您可以配置方法和类strutsconfig.xml。并用一个动作来映射它。 实例变量可以直接在jsp.For例如访问,如果你有一个方法

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 directly--

+0

你可以直接从jsp调用一个方法!我刚刚解决了环境问题,现在它按照我的预期工作。不管怎么说,还是要谢谢你! – Mogthew

0

我不知道你正在尝试做访问nameslist,因为你所要求的是相当抽象的,它总是更好地显示你正在尝试的JSP页面o做你描述的事情,这可以给予另一个更好的图像。

如果您尚未定义任何方法,则需要告诉S2您希望调用哪种方法,默认为​​。

你的情况

你可以告诉S2要通过使用配置文件(struts.xml中)来调用其中任何一个方法或标注类似

<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"> 
在你已经过要调用哪个Action类的方法,标签告诉S2上面的例子中3210

和所有你需要配置它们在你的struts.xml文件

+0

我试图直接从struts中返回jsp。事实证明,我设法弄糟了我的环境设置。 – Mogthew

+0

我不清楚你在做什么? –

0

原来是一个环境问题是造成支柱作用奇怪的。它的工作正如我预期的那样,对这个模糊的问题表示歉意。

+0

考虑编辑您的问题以提及此问题,或者回答您所做的确切更改,并在您认为可能会影响其他人的情况下接受您的答案。有其他答案有帮助吗?如果是这样,那么考虑提高他们。 –