您可以使用 ajax 来填充您的模态内容:
$.ajax({
url : "yourPage.jsf",
type : "POST",
data : {
id: "your object's id"
},
dataType : "html"
}).done(function(html) {
$("#yourModal").html(html);
});
应该使用onclick
您的事件调用此 ajax<h:commandButton>
当然,您需要为您的模态内容创建一个 JSF 视图。此视图将包含您的文本和您的两个按钮“是”和“否”。“否”应该只是关闭您的模式,而“是”应该调用您的 bean 操作:<h:commandButton action="#{controller.delete(item)}" />
。
不要忘记使用参数填充控制器item
以id
将数据绑定到视图。
编辑 :
我会试着给你看一个例子。
主视图(view.xhtml):
<h:form>
<h:dataTable value="#{controller.itemlist}" var="item">
<h:column>
...
</h:column>
<h:column>
<h:commandButton value="delete" onclick="return populateModal(#{item.id}); " />
</h:column>
</h:dataTable>
</h:form>
填充模态的脚本(view.xhtml):
<script type="text/javascript">
function populateModal(id) {
$.ajax({
url: "view2.jsf",
type: "POST",
data: { id: id },
dataType: "html"
}).done(function(html) {
$("#modal").html(html);
$("#modal").show();
});
return false;
}
</script>
然后你需要一个视图来查看你的模态内容(view2.xhtml):
<h:form>
Delete #{testBean2.item.name} ?
<h:commandButton value="YES" action="#{testBean2.delete(testBean2.item)}" />
<h:commandButton value="NO" onclick="return closeModal();" />
</h:form>
这个视图的控制器(testBean2.java):
private Item item;
@PostConstruct
public void init() {
// GET id parameter from HTTPRequest
// Populate Local Item
}
public void delete(Item item) {
// Delete your item
}