解決策が見つからないという問題があります。私は and を使用してJSF 2.1
おりprimefaces
、ゲッターとセッターを持つブール変数を含む Bean があります。更新時p:ajax
にブール値を更新するメソッドを呼び出していp:graphicImage
ました。
デバッグ中、この作業は正しく行われます。p:graphicImage
Bean のブール変数に設定された属性 render があります。ただし、画像が ajax によって更新されると、ゲッターが呼び出されて正しい値 true が返されますが、画像はレンダリングされません!
これは私のコードです:
<p:panel>
<p:panelGrid columns="3" cellpadding="5">
<p:row>
<p:column>
<p:outputLabel value="#{msg.username}"></p:outputLabel>
</p:column>
<p:column>
<h:inputText id="username" value="#{user.userName}">
<p:ajax listener="#{registationController.checkUserName}" event="blur" update="imgControl"/>
</h:inputText>
</p:column>
<p:column id="imgControl">
<p:graphicImage
value="/resources/images/#{registationController.userNameAvailable}"
height="24px" rendered="#{registationController.imgShow}"/>
</p:column>
<p:message for="username" id="msgUsername" severity="info"></p:message>
</p:row>
</p:panelGrid>
</p:panel>
そして、これは豆です:
@ManagedBean(name="registationController")
public class RegistrationController implements Serializable{
private static final long serialVersionUID = 1086976296682850824L;
@ManagedProperty(value="#{user}")
private User usr;
private MyLogger log;
private String userNameAvailable=null;
private boolean imgShow=false;
public void checkUserName(AjaxBehaviorEvent event){
User tempUser=null;
UserDAOImpl userDAOImpl=new UserDAOImpl();
if(usr.getUserName()!="" && usr.getUserName()!=null){
tempUser=userDAOImpl.selectUserByUsername(usr.getUserName());
imgShow=true;
} else {
imgShow=false;
}
if(tempUser!=null){
userNameAvailable="no.png";
} else{
userNameAvailable= "yes.png";
}
}
public boolean isImgShow() {
return imgShow;
}
others methods...
}
これが機能しない理由はありますか?
ありがとう、ジョン