Заполнение формы HTML со свойствами из Java Bean и JSP? - PullRequest
1 голос
/ 03 ноября 2011

У меня есть веб-страница с такой формой:

<html>
<head>
    ...
</head>
<body>
<form id="form4" name="form4" method="post" action="Receive.jsp">
    <input name="inputField1" type="text"/>
    ...
    <input type="submit" value="Send"/>
</form>
</body>

</html>

Затем в моем Receive.jsp я использую:

<jsp:useBean id="form4" class="control.FormBean4" scope="session"/>
<jsp:setProperty name="form4" property="*"/>

Чтобы получить все входные данные из формы вБин, тогда я делаю кое-что с этим.Теперь я хочу перенаправить данные из Бина в другой JSP с другой формой и заполнить поля ввода этой формы свойствами из моего Бина.У меня вопрос, есть ли какой-нибудь способ автоматического заполнения формы, например <jsp:setProperty name="form4" property="*"/>, но в обратном направлении?

Я уже пробовал <jsp:getProperty name="form4" property="*"/>, но, очевидно, это не сработало (я где-то читал в справочнике JSP, что этонедопустимо), поэтому мне интересно, знаете ли вы какой-нибудь способ сделать это, потому что у меня больше, чем одна форма, каждая с кучей полей, и я хотел бы сохранить всю работу по установке значений по одномуодин.

Я все еще новичок в JSP и не очень много знаю о JSTL или каких-либо фреймворках, таких как Struts, любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 03 ноября 2011

Мой вопрос: есть ли способ автоматически заполнить форму, например <jsp:setProperty name="form4" property="*"/>, но в обратном порядке?

Нет.Вам нужно будет сделать это самостоятельно или перейти на MVC-платформу на основе JSP / Servlet, такую ​​как JSF, Struts, Spring-MVC и т. Д.

Чтобы сделать это самостоятельно:

<input type="text" name="textName" value="${fn:escapeXml(bean.textName)}" />
<select name="dropdownName">
  <c:forEach items="${bean.dropdownOptions}" var="dropdownOption">
    <option value="${dropdownOption.key}" ${bean.dropdownName == dropdownOption.key ? 'selected' : ''}>${dropdownOption.value}</option>
  </c:forEach>
</select>
<c:forEach items="${bean.checkboxOptions}" var="checkboxOption">
  <c:forEach items="${bean.checkboxName}" var="checkboxName">
    <c:if test="${checkboxName == checkboxOption.key}">
      <c:set var="checked" value="true" />
    </c:if>
  </c:forEach>
  <input type="checkbox" name="checkboxName" value="${checkboxOption.key}" ${checked ? 'checked' : ''}>${checkboxoption.value}<br/>
</c:forEach>

Для этого, например, с помощью JSF:

<h:inputText value="#{bean.textName}" />
<h:selectOneMenu value="#{bean.dropdownName}">
  <f:selectItems value="#{bean.dropdownOptions}" />
</h:selectOneMenu>
<h:selectManyCheckbox value="#{bean.checkboxName}">
  <f:selectItems value="#{bean.checkboxOptions}" />
</h:selectManyCheckbox>

(что, в свою очередь, также немедленно минимизирует <jsp:useBean> и весь шаблон кода сервлета)

...