我有一个inputtext
启用 <a4j:commandbutton>
有id=subjectButton
在它的旁边。当我填写inputtext
时然后单击按钮,出现 disabled inputtext
显示在第一个上方,显示添加的内容。对于 enabled inputtext
上的每个内容,其上方会出现一个新的禁用的。
当我点击subjectButton
时,如果它已满,就会发生上面的情况,但如果它是空的,我想要一个 <h:message>
出现在它旁边,说不可能插入空主题。仅当我单击该按钮时,才会出现该消息。在下面的代码中,我试图做到这一点,请看:
<a4j:outputPanel id="subjectPanel">
<br />
<h:outputText value="Subjects:"/>
<br />
<a4j:repeat value="#{insertDocController.moreSubjects}" var="bean">
<h:inputText id="inputSubject" value="#{bean.subject}" disabled="true"/>
<a4j:commandButton type="submit" action="#{insertDocController.removeSubject(bean.subject)}"
value="Remove" render="subjectPanel" execute="@this" />
</a4j:repeat>
<br />
<h:inputText id="inputSub" value="#{insertDocController.currentSubject}"/>
<a4j:commandButton id="subjectButton" value="Insert"
action="#{insertDocController.addSubject}"
render="subjectPanel inpuSubject subjectMessage"
execute="@this inputSub">
</a4j:commandButton>
<h:message for="inputSub" id="subjectMessage" style="color:red" />
<br />
</a4j:outputPanel>
这是对 subjectButton
的 action 属性调用的方法 addSubject() 。消息设置在这里:
public void addSubject() {
if( (this.currentSubject == null) || (this.currentSubject.equals("")) ) {
FacesContext ctx = FacesContext.getCurrentInstance();
FacesMessage msg = new FacesMessage("Empty input!");
ctx.addMessage("subjectMessage",msg);
System.out.println("MSG : " + msg.getSummary().toString());
} else {
SubjectBean subBean = new SubjectBean();
subBean.setSubject(this.currentSubject);
this.docController.getDocumentBean().getSubjectList().add(subBean);
this.currentSubject = "";
}
}
当我单击按钮且输入文本为空时,addSubject()
被调用并设置消息,因为我在 addSubject()
内进行了该测试- (上面的代码也显示了):
System.out.println("MSG : " + msg.getSummary().toString());
并且该消息打印在控制台上。
有什么问题吗?
谢谢!
最佳答案
FacesContext.addMessage需要组件的 clientId,而不是消息 id。
试试这个:
ctx.addMessage("inputSub",msg);//inputSub as clientId
//clientId depends on the final generated id of the inputField
//it might be subjectPanel:inputSub or formId:inputSub
关于java - <a4j :commandbutton> doesn't show <h:message> created on its action method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639109/