Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSF readonly inputText issue

Tags:

jsf

primefaces

Readonly inputText doesn't validate if required="true" is set.

<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>
like image 877
Pyae Phyo Aung Avatar asked Sep 09 '13 07:09

Pyae Phyo Aung


1 Answers

This is behaving as expected. For all intents and purposes, JSF doesn't evaluate a value that is designated as readonly="true" throughout the request lifecycle. The recommended way to get this done is to make the value readonly during the RENDER_RESPONSE phase, where the view is being presented to the user. During any other phase, you want the JSF runtime to interpret the input field as writeable. For that purpose, you can use:

<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>

This way, the readonly property is only true when the user is viewing the page. For all other phases, the JSF runtime will see the field as writeable and as a result, validation will be carried out on the field

References:

  • JSF Readonly input not validated
  • How to detect if a previous redirect was invoked?
  • jsf (richfaces) readonly input text validation
like image 52
kolossus Avatar answered Oct 23 '22 10:10

kolossus