【问题标题】:How to move <h:message> outside form?如何将 <h:message> 移到表单之外?
【发布时间】:2014-10-15 14:46:33
【问题描述】:

我有一个表格,我想验证该电子邮件是否已存在于数据库中。我使用此代码:

<h:panelGroup id="messagePanel" layout="block">
  <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
</h:panelGroup>
<h:form>
  <h:panelGrid columns="2" class="form">
     <h:outputLabel value="#{bundle.CreateAdUserLabel_email}" for="email" />

     <h:inputText id="email" value="#{adUserController.selected.email}" 
                   title="#{bundle.EditAdUserTitle_email}" >
          <f:validator validatorId="emailVerification" />
          <f:ajax event="keydown" render="m_email" />
     </h:inputText>
     <h:message id="m_email" for="email" />
</h:form>

但我想在#messagePanel 中显示错误消息。我尝试将#m_email 移到顶部,但它无法识别它。

【问题讨论】:

    标签: jsf jsf-2 messages


    【解决方案1】:

    将消息面板放在表单中。

    <h:form>
     <h:panelGroup id="messagePanel" layout="block">
        <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
     </h:panelGroup>
     <h:panelGrid columns="2" class="form">
     <h:outputLabel value="#{bundle.CreateAdUserLabel_email}" for="email" />
    
     <h:inputText id="email" value="#{adUserController.selected.email}" 
                   title="#{bundle.EditAdUserTitle_email}" >
          <f:validator validatorId="emailVerification" />
          <f:ajax event="keydown" render="m_email" />
     </h:inputText>
     <h:message id="m_email" for="email" />
    </h:form>
    

    【讨论】:

    • 它适用于我并显示在 #m_email 中,我如何将其更改为显示在 #messagePanel 中。
    • 这是因为您的f:ajax 设置为更新m_email:&lt;f:ajax event="keydown" render="m_email" /&gt; 将其更改为@formmessagePanel
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多