在<a4j:outputPanel>
内,我有一个禁用的输入文本,它显示来自属于类DocumentBean
List<Author>
的Authors
。我还有一个显示作者姓名的<h:selectOneMenu>
。从菜单中选择"作者"时,"作者"将添加到我上面提到的List<Author>
中,并出现一个新的禁用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>
这是来自insertDocController的addAuthor():
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);
}
}
在同一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>
上选择一个作者时,它根本不会从<h:selectedOneMenu>
内的<a4j:commandbutton>
调用addAuthor()
的操作方法。
(这是未调用的操作方法的行 - 它是从我最初给你的上面的代码中提取的):
<a4j:commandButton type="submit" action="#{insertDocController.removeAutor(author.uri)}"
value="Remover" render="teste" />
如果我在它再次开始工作之前按原样转动输入文本。可能有什么问题?谢谢!
指定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>
希望对您有所帮助。