JSF和Primefaces graphicImage呈现属性更改但没有任何反应

时间:2013-01-28 15:21:59

标签: java ajax jsf-2 primefaces

我有一个问题,我找不到任何解决方案。我正在使用JSF 2.1primefaces,并且我有一个包含带有getter和setter的布尔变量的bean。我使用p:ajax来调用更新p:graphicImage时更新布尔值的方法。

正确调试此工作期间; p:graphicImage将渲染的属性设置为bean的布尔变量。但是当ajax更新图像时,会调用getter并返回正确的值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...
}

为什么这不起作用的任何想法?

谢谢, 约翰

0 个答案:

没有答案