2012-07-17 157 views
0

Im使用primefaces FieldSet组件,并在字段集中指定了一个按钮字段。我有一个要求,当我点击命令按钮时,一个h:selectonemenu &应该显示一个输入文本,并在进一步点击时,h:selectOnemenu & inputtext应该被隐藏。以下是我编写的代码,用于显示&隐藏。节目部分工作正常。但是,当我尝试点击按钮隐藏时,它不起作用。JSF CommandButton显示/隐藏问题

XHTML代码

<h:panelGrid id="grid1" columns="3"> 
    <p:fieldset id="GlobalAdjustment" legend="GlobalAdjustment" style="font-size:12px !important;width:30%" > 
    <h:commandButton id="globalAdjustID" image="#{review.imageUrl}" actionListener="#{review.showUpdateList}" /> 
    </p:fieldset> 

    <h:selectOneMenu id="SelectID" value="#{review.reviewList}" rendered="#{demandReview.selectoneRenderer}"> 
     <f:selectItems id="FilterSelectListID" value="#{review.reviewListIDs}" style="font-size:12px !important"></f:selectItems> 
    </h:selectOneMenu> 
    <h:inputText id="fieldUpdateID" required="false" rendered="#{review.inputTextRenderer}"></h:inputText> 
</h:panelGrid> 

ManagedBean的ActionListener方法

public void showUpdateList(ActionEvent event) 
{ 
    System.out.println("entering the Action Method:"); 
    Map<String, Object> idMap = new HashMap<String, Object>() ; 
    idMap = event.getComponent().getAttributes(); 
    String url = (String) idMap.get("image"); 
    System.out.println("The url is :"+url); 
    if(url.equals("/images/add_data_button.png")){ 
     //upbean.setImageUrl("/images/remove_data_button.png") ; 
     imageUrl ="/images/remove_data_button.png" ; 
     selectoneRenderer = true; 
     inputTextRenderer = true; 
    }else 
    { 
     imageUrl ="/images/add_data_button.png" ; 
     selectoneRenderer = false; 
     inputTextRenderer = false; 
    } 
} 

当我点击字段集首次内部命令按钮,它工作正常并显示selectOneMenu用于&文本框。一旦进一步点击,ActionListener不会被调用。请帮我解决问题。

谢谢

+1

可能是因为转换或验证失败,未达到JSF的INVOKE APPLICATION阶段。你的页面上是否有'h:messages'标签来显示错误?如果不是,请添加一个以查看会发生什么。 – 2012-07-17 14:23:10

回答

0

请求是否指定使用服务器端?对于这样的事情,我会认为一个简单的JavaScript脚本会更适合。

例如,使用jQuery库做这样的事情:

<h:commandButton id="xyz" onclick="$('#elementId').toggle();"/> 
1

你可以尝试另一种方法。使用号码:使用的commandButton这样的更新属性:

<h:panelGrid id="grid1" columns="3"> 
    <p:fieldset id="GlobalAdjustment" legend="GlobalAdjustment" style="font-size:12px !important;width:30%" > 
    <p:commandButton id="globalAdjustID" image="#{review.imageUrl}" actionListener="#{review.showUpdateList}" update="grid1"/> 
    </p:fieldset> 

    <h:selectOneMenu id="SelectID" value="#{review.reviewList}" rendered="#{demandReview.selectoneRenderer}"> 
     <f:selectItems id="FilterSelectListID" value="#{review.reviewListIDs}" style="font-size:12px !important"></f:selectItems> 
    </h:selectOneMenu> 
    <h:inputText id="fieldUpdateID" required="false" rendered="#{review.inputTextRenderer}"></h:inputText> 
</h:panelGrid> 

这种方式,您将使用部分处理和面板的内部组件的条件renderization将通过AJAX来完成。

此外,检查服务器的控制台以查看队列中是否有任何未显示的消息可能是个好主意。