当我创建模型时,我想保存模型的图像。我正在使用PrimeFaces fileUpload组件。当我保存图片时,我想知道特定图像所指的模型。这就是为什么我需要将模型的id发送到支持bean。
是否有可能将 id 模型发送到 fileUploadListener ?
<h:form enctype="multipart/form-data">
<p:panelGrid columns="2">
<h:outputLabel for="hotelName" value="#{msg.hotelName}"/>
<p:inputText value="#{apartmentNew.name}" id="hotelName"/>
<h:outputLabel for="hotelDescription" value="#{msg.hotelDescription}"/>
<p:inputText value="#{apartmentNew.description}" id="hotelDescription"/>
<h:outputLabel for="hotelImages" value="#{msg.hotelImages}"/>
<h:form enctype="multipart/form-data">
<p:fileUpload id="hotelImages"
fileUploadListener="#{apartments.handleImageUpload}"
mode="advanced"
sizeLimit="10000000"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/">
</p:fileUpload>
</h:form>
</p:panelGrid>
<p:commandButton id="saveApartmentButton" value="#{msg.save}" action="save"/>
<p:commandButton id="cancelCreationApartmentButton" value="#{msg.cancel}"
action="cancel"/>
</h:form>
答案 0 :(得分:33)
不是通过请求参数。您可以通过组件属性执行此操作。
E.g。
<p:fileUpload ...>
<f:attribute name="foo" value="bar" />
</p:fileUpload>
与
String foo = (String) event.getComponent().getAttributes().get("foo"); // bar
答案 1 :(得分:1)
我需要传递一个关键参数和上传的文件。我在APPLY_REQUEST_VALUES阶段发现fileUploadListener
执行,因此我无法在f:attribute
标记中使用EL表达式。我还试图使用event.getComponent().findComponent("id")
找到值,但是虽然组件存在,但值为null。我认为一个@ViewScoped
bean会修复缺失的值,但我固执地试图将我的bean保持在@RequestScoped
,直到我绝对没有其他选择。最后,我必须使用FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")
答案 2 :(得分:0)
类型错误:
String foo = event.getComponent().getAttributes().get("foo");
相反,这样做:
Object foo = event.getComponent().getAttributes().get("foo");
Integer foo = (Integer) event.getComponent().getAttributes().get("foo");
答案 3 :(得分:0)
You can use:
<div onclick="#{myBean.myMethod(myParam)}" >
<p:fileUpload id="fileUpload" fileUploadListener="#{myBean.onFileUplod}" mode="advanced" dragDropSupport="true"
update=":messages" process="@this" >
</p:fileUpload>
</div>
Method in myBean:
public void myMethod(String myParam) {
selectedMyParam = myParam;
}
Then you can use selectedMyParam in onFileUpload method.