В Struts1, как использовать тег set-property внутри тега действия?

Я хочу передать значение в действии, когда оно вызывается с помощью файла конфигурации struts1. Я создал компонент формы со следующим свойством

public class MyForm extends ActionForm {
    private String task;  

    public String getTask() {
        return task;
    }
    public void setTask(String task) {
        this.task = task;
    }
}

В struts-config.xml я определил компонент формы и действие, как показано ниже.

<form-bean name="myForm" type="demo.MyForm"></form-bean>
<action path="/myAction" name="myForm" type="demo.MyAction" scope="request">
    <set-property value="view" property="task" />
    <forward name="success" path="/result.jsp"></forward>
</action>

Я пытаюсь запустить его в веб-сфере 6.1 с этими конфигурациями, это дает следующее исключение

Deregister the mbean because of uncaught init() exception thrown by servlet action: javax.servlet.UnavailableException: Parsing error processing resource path file:/D:/workspaces/j-space/myProject/Web Content/WEB-INF/struts-config.xml
at org.apache.struts.action.ActionServlet.handleConfigException(ActionServlet.java:761)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:744)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:689)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:356)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
....

Я думаю, что что-то упускаю или неправильно использую тег set-property. Кто-нибудь может помочь?


person Bilal Mirza    schedule 06.11.2012    source источник
comment
set-property является потомком form-bean, а не action   -  person Rajesh Pitty    schedule 06.11.2012
comment
set-property также является дочерним элементом action.   -  person Bilal Mirza    schedule 06.11.2012
comment
надеюсь, что эта ссылка поможет вам лучше mail-archive.com /[email protected]/msg21396.html   -  person Rajesh Pitty    schedule 06.11.2012
comment
Я также пробовал <set-property value="view" key="task" />. Теперь исключения не возникает, но значение task равно null.   -  person Bilal Mirza    schedule 06.11.2012
comment
@Раджеш Спасибо, Раджеш. Пожалуйста, поместите эту ссылку в качестве ответа.   -  person Bilal Mirza    schedule 06.11.2012


Ответы (2)


DTD Struts 1.3 говорит

Элемент set-property особенно полезен, когда пользовательский подкласс используется с элементами , , или .

Создайте подкласс ActionMapping со свойствами, которые вы хотели бы включить

public class CustomActionMapping extends ActionMapping {

    private String task;

    public String getTask() {
        return task;
    }

    public void setTask(String task) {
        this.task = task;
    }
}

настроить сопоставление пользовательских действий в struts-config.xml

<action-mappings type="CustomActionMapping">
   <action path="/myAction" name="myForm" type="demo.MyAction" scope="request">
      <set-property value="view" property="task" />
      <forward name="success" path="/result.jsp"></forward>
   </action>
</action-mappings>

получить значение задачи в методе doGet/doPost вашего класса Action

CustomActionMapping cam = (CustomActionMapping) mapping;
String task = cam.getTask();

надеюсь, это поможет вам.

person Rajesh Pitty    schedule 06.11.2012
comment
Как получить доступ к этому свойству в JSP? - person Bilal Mirza; 07.11.2012