Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 h:commandLink呈现工作禁用不工作_Jsf 2 - Fatal编程技术网

Jsf 2 h:commandLink呈现工作禁用不工作

Jsf 2 h:commandLink呈现工作禁用不工作,jsf-2,Jsf 2,我有一个页面,在该页面上使用p dataTable显示一个prime faces表,其值来自会话范围的bean。表中的一列是commmandLink。我在表中的p:columns下有一个h:commandLink。我需要根据特定条件渲染h:commandLink。我需要在另一个条件下禁用/启用h:commandLink。为呈现h:commandLink而编写的逻辑工作正常,但用于禁用它的逻辑不起作用。commandLink具有嵌套的outputText和graphicImage。即使默认设置di

我有一个页面,在该页面上使用p dataTable显示一个prime faces表,其值来自会话范围的bean。表中的一列是commmandLink。我在表中的p:columns下有一个h:commandLink。我需要根据特定条件渲染h:commandLink。我需要在另一个条件下禁用/启用h:commandLink。为呈现h:commandLink而编写的逻辑工作正常,但用于禁用它的逻辑不起作用。commandLink具有嵌套的outputText和graphicImage。即使默认设置disabled=“true”也不起作用。当我单击commandLink显示的图像时,我会看到在commandLink onClick上使用javascript显示的对话框

<p:dataTable value="#{myBean.items}" 
                id="pdatatableid"
                var="oneItem"
                rowIndexVar="rowIdxVar"
                rows="#{myBean.displayRows}" 
                cellspacing="0" 
                width="500px"
                emptyMessage="Item(s) requested cannot be found" 
                lazy="true"
                first="#{myBean.firstRow}" 
                paginator="true" 
                paginatorPosition="top">

        <p:columns value="#{myBean.headerList}" var="colHeader"
                    columnIndexVar="colIdx" sortBy="#{oneItem[colHeader.attribute]}" headerText="#{colHeader.label}" rendered="#{not empty myBean.headerList}">

            <h:commandLink action="#{myBean.performLinkAction(colHeader)}"
                        rendered="#{colHeader.commandLink &amp;&amp; colHeader.linkAction != 'removeWorkItemEscalation' &amp;&amp; colHeader.linkAction == 'orderCancellation' &amp;&amp; oneItem.cancelOrder}"
                        disabled="true" immediate="true"
                        onclick="#{rich:component('cancellationDlg')}.show();return false;">
                        <h:outputText rendered="#{(colHeader.valueImage) == null}"
                            value="#{myBean.getColumnValue(colHeader,colIdx)}" />
                        <h:graphicImage rendered="#{(colHeader.valueImage) != null}"
                            value="#{colHeader.valueImage}"
                            alt="#{myBean.getColumnValue(colHeader,colIdx) ? 'Yes':'No'}"
                            title="Cancel Quote" />
            </h:commandLink>                    
        </p:columns>
</p:dataTable>
    public boolean getCancelOrder(){
        boolean cancelOrder = false;
        if(!StringUtils.isEmpty(getOrderVO().getRealm())
                && "NETWORK".equalsIgnoreCase(getOrderVO().getRealm())){
            cancelOrder = true;
        }

        return cancelOrder;
    }

above is the bean method used for rendered attribute which is working.

Similar implementation and even defaulting disabled to "true" does not work.

公共布尔getCancelOrder(){
布尔取消顺序=假;
如果(!StringUtils.isEmpty(getOrderVO().getRealm())
&&“网络”.equalsIgnoreCase(getOrderVO().getRealm())){
取消订单=真;
}
退货取消订单;
}
上面是用于渲染属性的bean方法,该方法正在工作。
类似的实现甚至将disabled默认为“true”都不起作用。

查看生成的HTML。设置disabled=true将生成一个范围标记

如果指定了“disabled”属性,则不要呈现HTML“a”锚元素或其“href”属性。相反,渲染一个“span”元素


如果有一个属性onClick,这将产生客户端行为。

使用commandButton代替commandLink解决了问题。在搜索jsf commandButton和commandLink之间的差异时,我发现它们分别生成不同种类的HTML元素input和href a,commandLink使用javascript进行提交。在commandButton的onClick上编写的javascript按预期工作,当按钮被禁用时不会被调用。在commandLink上,即使按钮被禁用,javascript也会被调用。

我也遇到了同样的问题,通过删除呈现的h:commandLink解决了这个问题 只留下h:graphic图像

<h:commandLink> 
    <h:graphicImage rendered="#{varDataTable.atribute}"/> 
</ h: commandLink>

使用引导:


我也遇到了同样的问题,通过在EL条件下添加disabled解决了这个问题

<h:commandLink class="#{empty Backing.list?'disabled':''}" action="#{Backing.next}">
                        <i class="fa fa-calendar"></i>Label
                        <f:ajax render="@form" />
                    </h:commandLink>

标签

使用commandButton代替commandLink解决了问题。在搜索jsf commandButton和commandLink之间的差异时,我发现它们分别生成不同种类的HTML元素input和href a,commandLink使用javascript进行提交。在commandButton的onClick上编写的javascript按预期工作,当按钮被禁用时不会被调用。在commandLink上,javascript被调用,即使按钮被禁用。