2013-12-15 4 views
1

Я чувствую, что могу быть очень близко к решению, но я просто не могу его понять. Основной поток программы: сначала вы заполните форму и отправьте ее. Класс действия будет хранить объект в сеансе. Вторая страница использует итератор для отображения всех имен и гиперссылки на них, чтобы при нажатии на имя он переместился на страницу, где вы можете редактировать информацию (так что третья страница представляет собой форму, заполненную всей информацией из объект, на который пользователь нажимает). Данные отправляются с помощью get, но я не могу извлечь это значение, переданное, чтобы установить его как значение текстового поля.Получение значения запроса на получение в Struts 2

Вот код, чтобы уточнить: первой страницы (при добавлении начальной информации)

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <h1>Add a Contact </h1> 
    <s:form action="ContactAction" namespace="/example" method="post" > 

     <s:textfield name="firstName" label="First Name" size="20" /> 

     <s:textfield name="lastName" label="Last Name" size="20" /> 

     <s:submit value="Submit"/> 
    </s:form> 
</body> 

На второй странице (отображается контактная информация и гиперссылками)

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
    </head> 
    <body> 
    <s:url action="index.action" var="urlTag" /> 


    <s:a href="%{urlTag}">Add Another Contact</s:a> 


    <table border="1"> 

       <s:iterator value="#session.contacts" var="contact"> 
        <tr> 
         <s:url value="http://localhost:8080/Project/example/EditContact.jsp" var="urlTag" includeParams="get" > 
          <s:param name="firstName"> <s:property value="firstName"/> </s:param> 
          <s:textfield label="First Name" name="firstName" key="firstName" required="true" size="25" /> 
         </s:url> 
         <td> 
          <s:property value="lastName"/> 
          <s:a href="%{urlTag}"> <s:property value="lastName"/> </s:a> 
         </td> 
        </tr> 
       </s:iterator> 
      </table> 

, как вы можете видеть выше (вторая страница), firstName отображается успешно в текстовом поле. Когда вы нажимаете на фамилию, она отправляет информацию через запрос на получение (она успешно делает это, потому что я могу видеть? FirstName = bob в URL-адресе)

Третья страница (где форма должна быть предварительно заполнена данные)

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <h1>Edit a Contact </h1> 
    <s:form action="ContactAction" namespace="/example" method="post" > 

     <s:param name="firstName"> <s:property value="firstName"/> </s:param> 
       <s:textfield label="First Name" name="firstName" key="firstName" value="%{contact.firstName}" required="true" size="25" /> 
     <s:property value="lastName" /> 
     <s:textfield name="lastName" label="Last Name" size="20" /> 



     <s:submit value="Submit"/> 
    </s:form> 
</body> 

код страницы 3 не заполнить firstName текстовое поле со значением firstName (даже если она успешно прошла с ГЭТ)

Есть ли у стойки эквивалент PHP $_GET['firstName']? Как я могу получить текстовое поле для заполнения с переданным значением get?

Я тяну свои волосы, пытаясь понять это! Любые рекомендации будут оценены.

+1

Где находится класс действий? – Quaternion

+0

Я думал, что это необязательно для вопроса. Это долго (я не понимаю, почему это будет проблемой) – Shamwow

+0

Действительно неясно: | И ваши (только соответствующие части!) Код действия необходим, чтобы угадать, что происходит. Только JSP объясняют почти ничего ... –

ответ

0

Конечно, он имеет эквивалент, но для заполнения формы вам это не нужно, потому что форма должна быть заполнена автоматически. Для этого вам нужно создать свойства компонента действия с именем текстовых полей и инициализировать их. Пока вы сохраняете данные в сеансе, вы можете получить значения сеанса в свойствах действия. Посмотрите, как это делается в простом приложении Hello World.

Смежные вопросы