2016-10-25 37 views
0

有沒有一種方法可以在Struts1的struts-config.xml配置文件中定義在Action類(Action,BaseAction,DispatchAction等)中執行哪個方法名?可以在Struts1的struts-config.xml文件中定義類方法名嗎?

我知道,默認情況下,DispatchAction.execute()方法將解析「方法」參數的參數列表並執行該方法,但是我希望看看是否有方法來定義配置文件中的方法,因爲我可以在Struts2中做。

Struts1框架能夠支持這個開箱即用嗎?

回答

1

對不起,晚上太晚了。以下內容正如你上面所述。只需在struts config中爲DispatchActionMapping定義參數參數。稱之爲'方法'或'行動'或其他。 URL中的賦值/傳遞值必須與DispatchAction中方法的確切名稱相匹配。方法簽名與四個參數。返回類型ActionForward。沒有其他辦法。我相信你已經知道這種方法。這是最「開箱即用」的情況。

+0

我的目標是不使用的URL參數。我想在配置文件中指定action方法,而不是在url中。在struts2中,我可以在配置文件中指定方法名稱。我想在struts1中沒有辦法? –

+0

無法在struts1的struts-config中做到這一點! –

2

您可以在您的新控制器中擴展org.apache.struts.action.Action,並從重寫的​​方法中調用您想要的任何執行方法,然後添加的每個新操作都將擴展您的新控制器。

,我從來沒有嘗試過的另一種方法是在你的項目配置struts-tiles.tld修改以下元素指定自己的控制器:

<attribute> 
    <name>controllerClass</name> 
    <required>false</required> 
    <rtexprvalue>true</rtexprvalue> 
    <description> 
    <![CDATA[ 
    <p>Class type of a controller called immediately before page is inserted.</p> 
    <p>Controller is used to prepare data to be render by inserted Tile.</p> 
    <p>See also controlerUrl</p> 
    <p>Class must implements or extends one of the following :</p> 
    <ul> 
     <li>org.apache.struts.tiles.Controller</li> 
     <li>org.apache.struts.tiles.ControllerSupport</li> 
     <li>org.apache.struts.action.Action (wrapper org.apache.struts.action.ActionController is used)</li> 
    </ul> 
    <p>See also controllerUrl. Only one of controllerUrl or controllerClass should be used.</p> 
    ]]> 
    </description> 
    </attribute> 
相關問題