всплывающее окно javascript не получает управляемого значения - PullRequest
0 голосов
/ 08 января 2011

Я не понимаю, что когда я нажимаю сохранить в форме ниже, я сохраняю текущее содержимое inputTextArea, но когда я хочу просмотреть предварительный просмотр содержимого inputTextArea, я вижу содержимое последнего сохраненного почтового шаблона.То, что я должен увидеть, это, конечно, текущее значение textArea (после того, как оно преобразовано).Почему не отображается обновленное значение customMailTemplate?

<h:form id="gameMailForm" prependId="false" rendered="#{customizeGameMailBean.renderGameMailPanel}">
      <h:panelGrid columns="3">
      <h:inputTextarea
              styleClass="gameMailTextArea, textArea"
              id="gameMailTextArea"
              value="#{customizeGameMailBean.customMailTemplate}"
              converter="gameMailTemplateConverter"
              style="height: 120px; width: 300px; font-size: 11px;">
              <f:validator validatorId="gameMailValidator"/>
       </h:inputTextarea>
 <p:commandButton value="Save"
                  action="#{customizeGameMailBean.saveMailTemplate}"
                  ajax="false"/>
 <p:commandButton value="Preview"
                  ajax="true"
                  action="#{customizeGameMailBean.doNothing}"
                  oncomplete="javascript: window.open('gameMailPreview.jsp','Game Email','width=300,height=300')"
                  immediate="true"/>
</h:panelGrid>
</h:form>

gameMailPreview.jsp:

<%@page import="wmc.web.controller.CustomizeGameMailBean"%>
<%@page import="javax.faces.context.FacesContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% CustomizeGameMailBean gameMailBean = (CustomizeGameMailBean) request.getSession().getAttribute("customizeGameMailBean");%>
<%=gameMailBean.getCustomMailPreview()%>

Возможно, что-то не так с синхронизацией?игра doNothing действительно ничего не делает.Это пустой метод void.

1 Ответ

1 голос
/ 08 января 2011

Проблема заключается в том, что вторая командная кнопка имеет свой непосредственный атрибут, установленный в значение true.Это приведет к тому, что метод действия будет вызван на этапе применения значений запроса, а затем сразу пропущен, чтобы обработать ответ.

Фактически, никакие значения модели не будут обновлены, таким образом, у вас сохранятся предыдущие значения в модели,Возможно, это сбивает с толку, но компонент сохранит только что введенное вами значение.Я просто не перешел на модель.Для получения дополнительной информации об этом посмотрите, что означает непосредственный атрибут в JSF, и особенно то, что он делает, когда применяется к кнопке команды.

(я также хотел бы отметить, что использование области сеанса для передачи значенийвсплывающее окно вызывает проблемы. Это открывает двери для всех видов условий гонки, когда пользователь открывает страницу в нескольких вкладках или окнах. Если это возможно, вам может быть лучше использовать область диалога Java EE 6.)

...