Как изменить компонент внутри модалпанели?

Является ли это возможным? если да, то как мне это сделать?

Мне нужно изменить <h:outputText> после <a4j:commandLink> действие выполнено, оба компонента находятся внутри модалпанели и эта модальпанель находится внутри я пробовал:

<a4j:commandLink value="somevalue" id="someid" action="#{MyBean.myAction()}"
    reRender="outputtextid">
    <f:param name="paramid" value="paramvalue"/>
</a4j:commandLink>

1 ответ

Решение

Убедитесь, что ваш <h:outputText> находится вне формы, содержащей <a4j:commandLink> или же он свяжет значение outputText с фактическим значением в форме, что приведет к странному поведению на вашей странице.

<h:form>
    <a4j:commandLink value="somevalue" id="someid" action="#{MyBean.myAction()}"
        reRender="outputtextid">
        <f:param name="paramid" value="paramvalue"/>
    </a4j:commandLink>
</h:form>
<h:outputText value="#{MyBean.outputValue}" id="outputtextid" />

Если вы должны иметь <h:outputText> внутри формы, вы должны рассмотреть возможность обновления значения с помощью oncomplete атрибут tag в commandLink, который выполняет код JavaScript.

Если вы хотите показать сообщение пользователю, вы можете использовать <h:messages> или же <rich:messages> компонент тега, это будет лучшим вариантом, чем использование outputText.

Другие вопросы по тегам