J'essaie d'implémenter un scénario utilisant JSF. J'ai un commandExButton
et quand l'utilisateur clique sur ce bouton "A" il montre le panelDialog
qui contient selectManyCheckBox
articles. Je génère ces éléments dans le bean backend en analysant un fichier qui est continuellement mis à jour. Ce que je veux, c'est que, chaque fois que je clique sur ce bouton "A", je devrais obtenir les derniers selectItems en analysant le fichier via le bean backend. Mais ce que je reçois le même selectItem qui a été généré lors de la première page. Donc à partir de maintenant j'ai une solution de contournement, dans lequel j'ai inclus un bouton d'actualisation qui actualise réellement la page, puis l'utilisateur cliquez sur "A" pour obtenir le dernier selectItem en analysant le contenu du fichier actuel. Mais est-ce faisable de toute façon sans ajouter un nouveau bouton et en utilisant le bouton existant?Comment faire pour actualiser dynamiquement h: selectManyCheckbox selectItems
Voici le code que j'utilise
<td>
<hx:commandExButton id="preferenceButton" styleClass="form" value="#{nls.preferenceLink}"
title="#{nls.preferenceLinkTitle}" type="submit" />
</td>
<td>
<h:form id="PrefForm" rendered="#{Test.isCurrent}">
<hx:panelDialog type="modal" id="preferenceSet" styleClass="panelDialog" for="preferenceButton"
title="#{nls.preferenceDialogTitle}">
<h:outputText styleClass="panelStartMessage" style="display:block;"
value="#{nls.preferenceDialogWindowText}" />
<h:panelGroup rendered="#{Test.hasSelectItem }"
style="display:block;width:300px;height:360px;overflow:auto;" styleClass="panelGroup"
id="prefPanelGroup">
<h:selectManyCheckbox value="#{Test.selectedItems}" layout="pageDirection">
<f:selectItems value="#{Test.selectItems}" />
</h:selectManyCheckbox>
</h:panelGroup>
<hx:panelBox styleClass="information_box" id="noCommandWindow" layout="lineDirection"
rendered="#{!Test.hasSelectItem }">
<h:outputText styleClass="outputText" id="cmdInfo" value="#{nls.noCommands}" />
</hx:panelBox>
<hx:panelBox id="buttonBox1" styleClass="panelStartBox" layout="lineDirection">
<hx:commandExButton id="submitPref" styleClass="commandExButton" type="submit"
value="#{nls.submit}" action="#{Test.action}">
<hx:behavior event="onclick" behaviorAction="hide" targetAction="preferenceSet"
id="behaviorSubmitPref" />
</hx:commandExButton>
<hx:commandExButton id="CancelPref" styleClass="commandExButton" type="submit"
value="#{nls.cancel}" action="Test">
<hx:behavior event="onclick" behaviorAction="hide" targetAction="preferenceSet"
id="behaviorCancelPref" />
</hx:commandExButton>
</hx:panelBox>
</hx:panelDialog>
</h:form>
</td>
code dans Bean:
public class Test{
private List<String> selectedItems;
private List<SelectItem> selectItems;
public List<SelectItem> getSelectItems() {
// populate the selectItem here...
}
}
Salut BalusC, Merci pour votre réponse. Mon bean actuel est limité à la session. J'ai essayé de lier la méthode action et la méthode actionListener à selectItems et après que la boîte de dialogue du panneau a affiché le dernier élément de sélection de case à cocher. Mais le bouton n'appelle pas du tout la méthode du bean, et je suis bloqué ici. Y a-t-il une alternative? –
"remplissez-le pendant sa construction et ajoutez une méthode comme reload()" - donc quel composant dois-je lier cette méthode? Devrais-je ajouter un autre bouton et attacher ce bouton d'actualisation? mais dans ce cas, il rafraîchira toute la page, ce que je veux éviter.Je suis nouveau à JSF alors s'il vous plaît supporter mes connaissances limitées si je ne comprenais rien d'évident ici. –