2013-09-09 8 views
9

Readonly inputText не проверяет, установлен ли required="true".JSF readonly inputText issue

<h:panelGrid columns="3" id="townShipPanelGroup"> 
    <p:inputText value="#{AddNewLifeProposalActionBean.beneficiariesInfoDTO.residentAddress.township == null ? '' : AddNewLifeProposalActionBean.beneficiariesInfoDTO.residentAddress.township.name}" 
     style="width:250px;margin-left:-4px;" id="townShip" readonly="true"> 
      <f:validateLength maximum="36"/> 
    </p:inputText> 
    <p:commandLink immediate="true" oncomplete="selectTownShipDialog.show()" id="selectTownShipDialogLink" action="#{AddNewLifeProposalActionBean.loadTownshipList()}"> 
    <h:graphicImage url="/images/search.png" style="height:30px;width:30px"/> 
    </p:commandLink> 
</h:panelGrid> 
+1

Вы уверены, что можете использовать == в атрибуте value? Посмотрите на это [ПРИМЕР] (http://stackoverflow.com/a/4870557/1692632) – Darka

+0

попробуйте исправить значение, а затем сообщите нам, что является результатом – ktaria

ответ

13

Это поведение, как ожидалось. Во всех смыслах и целях JSF не оценивает значение, которое обозначено как readonly="true" на протяжении всего жизненного цикла запроса. Рекомендуемый способ сделать это - сделать значение только для чтения во время фазы RENDER_RESPONSE, где представление отображается пользователю. Во время любой другой фазы вы хотите, чтобы среда выполнения JSF интерпретировала поле ввода как записываемое. Для этой цели вы можете использовать:

<p:inputText value="#{AddNewLifeProposalActionBean.beneficiariesInfoDTO.residentAddress.township == null ? '' : AddNewLifeProposalActionBean.beneficiariesInfoDTO.residentAddress.township.name}" 
     style="width:250px;margin-left:-4px;" id="townShip" readonly="#{facesContext.renderResponse}"> 
      <f:validateLength maximum="36"/> 
    </p:inputText> 

Таким образом, readonly свойства только справедливо, когда пользователь просматривает страницу. Для всех остальных фаз JSF во время выполнения будет видеть поле записываемые и в результате проверки будут проводиться на поле

Ссылки:

+3

Поскольку JSF2, '# {facesContext.renderResponse}' is not более гарантированно работает во всех случаях. http://stackoverflow.com/questions/17639415/make-pcalendar-readonly/17639554#17639554 – BalusC

+0

Спасибо большое. Сейчас он работает –

+0

@IloveseventeenButnotsixteen приветствуется – kolossus