希望你们一切顺利。 scenerio是我有一个页面,您上传图片,然后将其删除。我使用了像这样的代码
<h:panelGrid columns="5"
border=""
width="20%"
style="position: absolute; top: 50px;"
columnClasses="asteriskColumns, nameColumns" >
<h:outputText value="*" />
<h:outputText value="Map: " />
<p:fileUpload id="cityMap"
description="Image"
update="city messages"
allowTypes="*.jpg;*.png;*.gif;*.jpeg;"
auto="true"
fileUploadListener="#{cityDetail.imageUpload}" >
</p:fileUpload>
<p:graphicImage id="city"
value="#{cityDetail.imagePath}"
width="80"
height="50"
cache="false">
<f:event type="preRenderComponent" listener="#{cityDetail.putImage}" />
</p:graphicImage>
<p:commandLink update="city"
action="#{cityDetail.removeImage}"
style="color: #0d5b7f;text-decoration: underline"
onclick="">
<h:outputText value="remove" />
</p:commandLink>
<h:outputText value="*" />
<h:outputText value="Image1: " />
<p:fileUpload id="cityImage1"
description="Image"
update="Image1 messages"
allowTypes="*.jpg;*.png;*.gif;*.jpeg;"
auto="true"
fileUploadListener="#{cityDetail.imageUpload}" >
</p:fileUpload>
<p:graphicImage id="Image1"
value="#{cityDetail.imagePath}"
width="80"
height="50"
cache="false" >
<f:event type="preRenderComponent" listener="#{cityDetail.putImage}" />
</p:graphicImage>
<p:commandLink update="Image1"
action="#{cityDetail.removeImage}"
style="color: #0d5b7f;text-decoration: underline"
onclick="if (!confirm('Are you sure, you want to delete the picture?')) { return false; }; return true;">
<h:outputText value="remove" />
</p:commandLink>
<h:outputText value="*" />
<h:outputText value="Image2: " />
<p:fileUpload id="cityImage2"
description="Image"
update="Image2 messages"
allowTypes="*.jpg;*.png;*.gif;*.jpeg;"
auto="true"
fileUploadListener="#{cityDetail.imageUpload}" >
</p:fileUpload>
<p:graphicImage id="Image2"
value="#{cityDetail.imagePath}"
width="80"
height="50"
cache="false" >
<f:event type="preRenderComponent" listener="#{cityDetail.putImage}" />
</p:graphicImage>
<p:commandLink update="Image2"
action="#{cityDetail.removeImage}"
style="color: #0d5b7f;text-decoration: underline"
onclick="if (!confirm('Are you sure, you want to delete the picture?')) { return false; }; return true;">
<h:outputText value="remove" />
</p:commandLink>
.....
如果我使用
,问题是每件事情都运转良好onclick=""
但是当我使用
时onclick="if (! confirm('Are you sure, you want to delete the picture?') ) { return false;}; return true; "
然后删除不起作用。为什么?请告诉我我做错了什么。
我正在使用PrimeFaces 2.2
答案 0 :(得分:3)
我遇到了同样的问题,设置ajax = false对我不起作用。
我找到的解决方案是通过 onstart 更改 onclick 。
似乎primefaces使用onclick来处理ajax动作,因此当onclick返回一个值(为true或false )时,整个动作都会中止。
如果onstart返回true,则操作继续执行,如果为false,则中止。
答案 1 :(得分:2)
这样做:
<p:commandLink update="Image1" action="#{cityDetail.removeImage}"
onstart="return confirm('Are you sure, you want to delete the picture?')" />
答案 2 :(得分:1)
这看起来很奇怪'因为你用Java方式尝试这种(有点)但你使onclick="if (! confirm('Are you sure, you want to delete the picture?') ) { return false;}; return true; "
变得复杂 - 你没有正确使用javascript confirm函数。
你可以写:
onclick="return confirm('Are you sure, you want to delete the picture?')"
,但由于您使用的是Primefaces(顺便说一下 - 您可以升级到3.0.M4),您可以使用confirmDialog组件:
<p:commandButton value="Delete picture" onclick="confirmation.show()" type="button"/>
<p:confirmDialog message="Are you sure, you want to delete the picture?"
showEffect="bounce" hideEffect="explode"
header="Initiating deleting process" severity="alert" widgetVar="confirmation">
<p:commandButton value="Yes Sure" update="<some component you want to update>" oncomplete="confirmation.hide()" actionListener="#{myBean.deleteMethod}" />
<p:commandButton value="Not Yet" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
写作确实更多,但它肯定更优雅,更好!
答案 3 :(得分:1)
返回true而false不需要那里 只需使用简单如下代码
onclick="return confirm('Are you sure, you want to delete the picture?')"
答案 4 :(得分:1)
我没有使用p:commandLink。虽然我是这样做的,但工作正常
<h:outputText value="*" />
<h:outputText value="Map: " />
<p:fileUpload id="cityMap"
description="Image"
update="city messages"
allowTypes="*.jpg;*.png;*.gif;*.jpeg;"
auto="true"
fileUploadListener="#{cityDetail.imageUpload}" >
</p:fileUpload>
<p:graphicImage id="city"
value="#{cityDetail.imagePath}"
width="80"
height="50"
cache="false">
<f:event type="preRenderComponent" listener="#{cityDetail.putImage}" />
</p:graphicImage>
<h:commandLink value="remove"
title="Remove Picture"
style="color: #0d5b7f;text-decoration: underline"
onclick="if (! confirm('Are you sure, you want to remove picture?') ) { return false;}; return true; ">
<f:ajax event="click"
render="city"
listener="#{cityDetail.removeImage}"/>
</h:commandLink>
由于
答案 5 :(得分:0)
如果您在该标记中使用p:commandLink
,则会找到ajax;设置ajax=false
,然后就可以了。