将<h:message>和ajax事件添加到必需的inputtext </h:message> </a4j:commandbutton>后,不会调用<a4j:commandbutton> action属性

时间:2013-12-17 00:01:16

标签: jsf richfaces

<a4j:outputPanel>内,我有一个已停用的输入文字,显示属于班级Authors的{​​{1}}的{​​{1}}。我还有一个显示作者姓名的List<Author>。当选择菜单中的作者时,作者将被添加到我上面提到的DocumentBean,并且会显示新的已禁用<h:selectOneMenu>

以下是上述代码:

List<Author>

这是insertDocController中的addAuthor():

inputtext

在同一个 Autor: <a4j:outputPanel id="teste"> <a4j:repeat value="#{insertDocController.docController.documentBean.authorList}" var="author"> <br /> <h:inputText value="#{author.name}" disabled="true" /> <br /> <a4j:commandButton type="submit" action="#{insertDocController.removeAutor(author.uri)}" value="Remover" render="teste" /> </a4j:repeat> <br /> <h:selectOneMenu id="chooseAuthor" value="#{insertDocController.selectedAuthorUri}"> <f:selectItem noSelectionOption="true" itemLabel="selecione" itemValue=""/> <f:selectItems value="#{insertDocController.authorValues}" var="author" itemValue="#{author.uri}" itemLabel="#{author.name}"/> </h:selectOneMenu> <a4j:commandButton type="submit" action="#{insertDocController.addAuthor()}" value="Inserir" render="teste" /> <br /> </a4j:outputPanel> 页面上有一个输入文本。当输入文本是这样的时候,一切都正常工作:

public void addAuthor() {   
          if(this.selectedAuthorUri != null) {
                AuthorBean a = new AuthorBean();
                a.setUri(this.selectedAuthorUri);
                a.setName(this.authMapper.searchNameByAuthorUri(this.selectedAuthorUri));
                this.docController.getDocumentBean().addAuthor(a);
              }                                                     
    }

但由于我将inputtext设置为必需并向其添加了一条消息,因此停止了正常工作,如下所示:

xhtml

在我更改标题输入文本后,当我在Title: <h:inputText id="input" value="#{insertDocController.docController.documentBean.title}"> </h:inputText> 上选择作者时,它根本不会从 Title: <h:inputText id="input" value="#{insertDocController.docController.documentBean.title}" required="true" requiredMessage="Campo Obrigatorio"> <f:ajax execute="@this input" render="message" event="blur"/> </h:inputText> <h:message for="input" id="message" style="color:red"/> 内的<h:selectedOneMenu>调用操作方法addAuthor()

(这是没有调用的action方法的行 - 它是从我上面给你的上面的代码中提取的):

<a4j:commandbutton>

如果我在输入文本再次开始工作之前将其打开。 可能是什么问题?谢谢!

1 个答案:

答案 0 :(得分:2)

您需要指定execute属性。

删除作者

<a4j:commandButton type="submit" action="#{insertDocController.removeAutor(author.uri)}" 
         value="Remover" render="teste" execute="@this"> 
</a4j:commandButton>

添加作者按钮

<a4j:commandButton type="submit" action="#{insertDocController.addAuthor()}"
        value="Inserir" render="teste" execute="@this, chooseAuthor">
</a4j:commandButton>

希望它有所帮助。