如何使用自定义标签在JSF页面中创建按钮

时间:2012-08-03 19:15:43

标签: jsf jsf-2

我有这个简单的JSF按钮:

//Question Dialog
function deletedialog(button, a){      
    $("<div />", {
        text: a
    }).dialog({        
        width: 600,
        buttons: {
            "Ok": function() { 
                $("#form\\:deleterow").click();
                //  $('input[id$="deleterow"]').click();               
                $(this).dialog("close");
                button.value = "Processing...";
                button.disabled = true;                  
            }, 
            "Cancel": function(event) { 
                $(this).dialog("close");
                event.preventDefault();
                button.value = "Delete";
                button.disabled = false;
            } 
        }
    });         
}


                    <!-- hidden button -->
                    <h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountsController.deleteSelectedIDs}" style="display:none">
                        <f:ajax render="@form"></f:ajax>
                    </h:commandButton>
                    <!-- the delete button -->
                    <h:button onclick="deletedialog(this, 'Do you want to delete the selected rows?'); return false;" >
                        <h:graphicImage name="small-hover.png" library="images" title="Delete" />
                    </h:button>    

我想创建png图像,它将成为按钮的视觉主体。我将改变的唯一事情是按钮的标题,每次使用按钮的value属性我将设置。这可能吗?现在当我加载JSF页面时,我只看到没有标签的空按钮。

P.S 1我得到了这个结果:

enter image description here

2 个答案:

答案 0 :(得分:3)

使用将包装图像的命令链接:

<script type="text/javascript">
    function deletedialog(button, a) {
        $("<div />", {
            text: a
        }).dialog({        
            width: 600,
            buttons: {
                "Ok": function() { 
                    //$("#form\\:deleterow").click();
                    //using the hidden button click
                    document.getElementById('myForm:deleterow').click();
                    //  $('input[id$="deleterow"]').click();               
                    $(this).dialog("close");
                    button.value = "Processing...";
                    button.disabled = true;                  
                }, 
                "Cancel": function(event) { 
                    $(this).dialog("close");
                    event.preventDefault();
                    button.value = "Delete";
                    button.disabled = false;
                }
            }
        });
    }
</script>

<h:form id="myForm">
    <h:commandLink onclick="deletedialog(this, 'Do you want to delete the selected rows?')) return false;">
        <h:graphicImage name="small-hover.png" library="images"
            title="#{someBean.imageTitle}" />
    </h:commandLink>
    <h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountsController.deleteSelectedIDs}" style="display:none">
        <f:ajax render="@form" />
    </h:commandButton>
</h:form>

此外,mkyong site中有一个<h:graphicImage/>的好例子。


根据您的评论,您似乎想要一个带图标的按钮。此外,真实操作由隐藏的<h:commandButton>执行。所以我建议你阅读这个答案:

您的代码将是这样的:

<h:commandButton id="deleterow" value="HiddenDelete" action="#{AccountsController.deleteSelectedIDs}" style="display:none">
    <f:ajax render="@form" />
</h:commandButton>
<button type="submit" onclick="deletedialog(this, 'Do you want to delete the selected rows?')) return false;"><img src="resources/images/small-hover.png" /> Delete</button>

是的,您可以将基本HTML与JSF代码混合,但在IE 6浏览器客户端上阅读有关此实现的链接警告。

答案 1 :(得分:1)

我从基础开始。由于您甚至没有看到图像,当您右键单击浏览器窗口并选择“查看源”时,它是否提供了有关图像是否被插入页面的任何有意义的信息?如果您没有正确的图像路径,它将不会在页面上呈现图像。这是检查并尝试纠正的第一件事。 (即插上电脑)。

相关问题