即使单击jsf,按钮的参数也始终为空

时间:2015-06-29 16:06:21

标签: jsf jsf-2.2

我正在打开一个有形式的模态。我试图通过#{empty param['buttonid']}检查按钮是否被点击。但即使点击它也总是显示为空。

<div class="modal fade" jsf:id="dataReset">
        <div class="modal-dialog">
             <form jsf:id="reset-data-form" class="form-horizontal">
                <div class="modal-content">
                    <div class="modal-header">                  
                        <h4 class="modal-title">Modal Header</h4>
                    </div>
                    <div class="modal-body">
                        <div class="form-group">
                            <label for="inputEmail" class="col-sm-3 control-label">Email</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" 
                                       jsf:id="inputEmail" jsf:value="#{dataResetFacade.dataResetEmail}"                          
                                       name="inputEmail" />
                                <h:message for="inputEmail" p:class="error-msg"/>
                            </div>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button class="btn btn-default"
                            data-dismiss="modal">#{msg['general.button.cancel']}</button>
                        <button class="btn btn-primary" jsf:id="reset-data-button" 
                            jsf:action="#{dataResetFacade.resetdata}">submit
                            <f:ajax execute="@form" render="@form aaa bbb messages" onevent="close"/>
                        </button>
                         <h:outputText id="aaa" value="#{not empty param['reset-data-button']}"/>
                         <h:outputText id="bbb" value="#{empty param['reset-data-button']}"/>
                    </div>
                </div>
            </form>
        </div>
    </div>

我做错了什么。

1 个答案:

答案 0 :(得分:3)

您没有在那里指定正确的请求参数名称。请求参数名称基本上是JSF组件的客户端ID。 JSF输入和按钮组件的客户端ID由HTML元素的<button name="reset-data-form:reset-data-button" ... /> 属性表示。你可以通过右键单击web浏览器中的 View Source 来查看JSF生成的HTML输出。

鉴于目前的观点,这将如下所示:

<h:outputText id="aaa" value="#{not empty param['reset-data-form:reset-data-button']}" />
<h:outputText id="bbb" value="#{empty param['reset-data-form:reset-data-button']}" />

相应地改变参数名称:

binding

或者,只需使用<button jsf:binding="#{resetButton}" ... /> ... <h:outputText id="aaa" value="#{not empty param[resetButton.clientId]}" /> <h:outputText id="bbb" value="#{empty param[resetButton.clientId]}" /> 属性将JSF UIComponent实例绑定到Facelet范围中的唯一变量名称,然后让JSF评估UIComponent#getClientId()

this.Icon = this.Icon = new BitmapImage(new Uri(@"myIcon.ico", UriKind.Relative));

注意:将其绑定到bean属性。上面的代码是原样的。

另见: