2013-09-01 2 views
2

Я хочу передать объект из JSP в класс действия. Как это сделать? Я понятия не имею об этом. Некоторые из моих образцов кодов здесь:Пропустить объект из JSP в класс действия в Struts 1.3

<tr class="alt"> 
    <td><html:link href=""><bean:write name="EmpInfo" property="empId" /></html:link></td> 
    <td><bean:write name="EmpInfo" property="empName" /></td> 
    <td><bean:write name="EmpInfo" property="empAddress" /></td> 
    <td><bean:write name="EmpInfo" property="empPhNumber" /></td> 
    <td><bean:write name="EmpInfo" property="empEmailId" /></td> 
    <td><bean:write name="EmpInfo" property="empLocName" /></td> 
    <td><bean:write name="EmpInfo" property="empCountryName" /></td> 
    <td><bean:write name="EmpInfo" property="empDob" /></td> 
    <td><html:link href=""><bean:message key="view.single.emp.update"/></html:link></td> 
</tr> 

в приведенном выше коде в <html:link href=""> теге я хочу передать empId или объект EmpInfo для класса действий. Вот EmpInfo - объект ценности, и в нем есть все получатели и сеттеры.

ответ

0

Используйте html:param тег, он может быть использован в теле html:link тега

<html:link href=""><html:param name="empId"><bean:write name="EmpInfo" property="empId" /></html:param></html:link> 
+0

этот выше код не работает, хотя он не показывает никаких ошибок, но поле таблицы пуст, я не показываю никаких значений в нем или гиперссылку.но интересно то, что, когда я рассматривал исходный код в сгенерированный HTML он показывает это: ' ' но я использовал сообщение боба еще не отображающее – sasuke

+0

@sasuke Вы спросили, как пройти объект через ссылка, я не собираюсь писать рабочий код здесь, потому что он скопирован и вставлен с вашего вопроса и изменен, чтобы отразить детали этого ответа. –

+0

Я нашел ответ @roman c. спасибо за вашу помощь, вы сделали большую часть работы. Я загружаю правильные ан. – sasuke

0

Добавьте свой объект в сеанс или объект запроса по методу setAttribute(). Вы можете получить его из класса действия на getAttribute().

+0

я использовал SetAttribute() метод 'request.setAttribute т.е. («EmpInfo», empInfoVO)' в классе действий, а затем я прошел его здесь, в этом JSP. и теперь я хочу передать этот объект из этого jsp в другой класс действий. Как я могу это сделать? – sasuke

+0

Используйте метод session.setAttribute(). Тогда вы можете получить его в любом месте из своего приложения. –

+0

ОК, я получил его, но нет ли способа перейти от этого jsp к классу действий, кроме как сделать его в атрибуте session ?? если есть, то, пожалуйста, любезно поделитесь им, я хотел бы знать, что ... – sasuke

1

Поток управления распорок, как это:

  1. HttpRequest apears
  2. ActionServlet получает его , заполняет правильный ActionForm и передает управление действию
  3. Действие выполняет логику, а также переадресацию или перенаправление cts в ActionForward

Итак, если вы перешли на JSP, вы не будете передавать управление другому действию напрямую, но следующее действие вызывается после отправки нового запроса от браузера пользователя.

Таким образом, единственный способ передать объект - передать его свойства в качестве параметров запроса (желательно GET или POST).

Кстати, используя Struts 1.2+, вы не вынуждены иметь только строки String в ActionForm. Был ли ваш объект в форме действий ссылается его Java Beans конвенция:

class MyActionForm extends ActionForm { 
    private MyBean myBean; 

    public MyBean getMyBean() { 
     if (myBean == null) { 
      myBean = new MyBean(); 
     } 
     return myBean; 
    } 
} 

Теперь вы можете получить доступ к его свойствам с myBean.property1 в тегах JSP, и параметр запроса с именем myBean.property1 будет заполняться в недвижимость.

Struts 1.2+ использует Apache Commons BeanUtils внутри, поэтому вы можете использовать его Преобразователи для сложных типов.

+0

Ну, я расширяю 'MappingDispatchAction', а не' ActionForm'. и метод есть 'общественности (отображение ActionMapping, ActionForm форма, HttpServletRequest запрос, HttpServletResponse ответ) ActionForward viewDetailInfo бросает исключение { возврата mapping.findForward (успех); } ', который довольно прост, я просто переложил его на следующий jsp, а затем использовал объект bean, который я объявил в атрибуте session. – sasuke

+0

Кстати, пожалуйста, подробно объясните последнюю часть, начиная с кодирования .. я не смог ее получить. – sasuke

0

Это правильный рабочий код. Thanx к @roman гр за помощь мне

<td> 
       <html:link href="viewDetailInfo.do"> 
        <html:param name="empId"> 
         <bean:write name="empList" property="empId" /> 
        </html:param> 
         <bean:write name="empList" property="empId" /> 
       </html:link> 
</td> 
Смежные вопросы