Данные в <h: inputText readonly = «true»> исчезают при нажатии кнопки команды

Я использую JSF 1.1. У меня есть страница JSF с bean-областью запроса и полем ввода только для чтения.

<code><h:inputText id="dt" value="#{bean.sdate}" readonly="#{bean.disable}" />
<a onclick="cal('dt');"><img src="fr.gif" border="0"></a>
</code>

Когда я устанавливаю значение ввода с помощью JavaScript и нажимаю на кнопку команды, данные в поле ввода исчезают.

Как это вызвано и как я могу это решить.

Ответы на вопрос(1)

что свойство установлено вreadonly. Если это оцениваетtrue, тогда JSF не будет обрабатывать переданное значение и, следовательно, модель не будет обновляться. Если вы хотите установить его наreadonly при рендеринге видаа такж иметь JSF для обработки переданного значения, тогда вам нужно будет сделать это для оценкиtrue только на этапе ответа рендеринга. Вы можете использоватьFacesContext#getRenderResponse() за это. Вы должны сделать это в своемisDisable() метод.

public boolean isDisable() { // TODO: rename to isReadonly().
    return FacesContext.getCurrentInstance().getRenderResponse();
}

Примечание: в JSF2 вы можете получить доступ кFacesContext#getCurrentInstance() по#{facesContext} в представлении это также экономит некоторый шаблон в модели:

<h:inputText ... readonly="#{facesContext.renderResponse}" />

Также обратите внимание, что когда вы используете JSF2<f:viewParam>, тогда этот подход больше не будет работать с запросами GET. Смотрите также Сделайте p: календарь только для чтения для объяснения и обходного пути.

ВАШ ОТВЕТ НА ВОПРОС