2015-05-22 3 views
1

Мне нужна ваша помощь в рендеринге inputText на основе selecttio selectManyCheckbox в xhtml. Код:Как «unrender» a p: inputText на основе p: selectManyCheckbox выбор

<p:selectManyCheckbox id="basic" value="#{user1.selectedConsoles}"> 
    <f:selectItem itemLabel="Xbox One SS" itemValue="XboxOne" /> 
    <f:selectItem itemLabel="PS4 SS" itemValue="PS4" /> 
    <f:selectItem itemLabel="Wii U SS" itemValue="WiiU" /> 
    <p:ajax listener="#{user1.renderInput}" update="name"/> 
</p:selectManyCheckbox> 

<h:panelGroup id="name"> 
    <p:inputText value="" rendered="#{user1.renderText}"/> 
</h:panelGroup> 

И код боб:

private String[] selectedConsoles; //Setter & Getter 
private List<String> list = new ArrayList<String>(); //Setter & Getter 
private boolean renderText = false; //Setter & Getter 


public void renderInput() { 
    list= Arrays.asList(selectedConsoles); 
    if (list.contains("PS4")) { 
    renderText = true; 
    } 
    else if (!list.contains("PS4")) { 
     renderText = false; 
    } 
} 

В приведенном выше случае, когда я выбрал PS4, то inputText будет показано. Но когда я разблокирую PS4, inputText останется видимым в форме и не будет «unrendered». Как я могу это достичь.

ответ

-1

Для этого есть компонент PrimeFaces OutputPanel, который в основном выступает в качестве заполнителя. Либо вы используете autoUpdate true, либо обновляете его при выборе.

Следующий фрагмент кода решает проблему:

<h:panelGroup id="name"> 
     <p:outputPanel autoUpdate="true"> 
      <p:inputText value="" rendered="#{user1.renderText}" /> 
     </p:outputPanel> 
    </h:panelGroup> 
+0

я удалить downvote, как только вы изменить свой ответ, чтобы объяснить, как именно проблема OP является вызвана и как именно этот подход решает эту проблему. А именно, исходный код OP должен работать нормально. – BalusC

+0

@BalusC Вы абсолютно правы, ваш downvote совершенно оправдан. Пожалуйста, опубликуйте его как фактический ответ, чтобы я мог удалить мой. –

+0

Возможно, вы должны улучшить ответ @RagnarT, а не поспешно удалять. Не будьте так быстро отступать. Ваш ответ не является «неправильным», так как вы на самом деле не обращались к * почему * проблемы OP. Подсказка: это не в разметке – kolossus

Смежные вопросы