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