当前位置: 首页 > 知识库问答 >
问题:

通过PrimeFaces文件上传将值传递给后备bean

席成仁
2023-03-14

我试图上传文件,并通过PrimeFaces 3.5从选择框传递一个参数。

这是我的表格:

<h:form id="idAssessmentsUploadForm" enctype="multipart/form-data">

    <h:panelGrid cellspacing="10" styleClass="standard-panel" columns="2" id="idAssessmentsUploadPanelGrid">

        <h:outputText value="#{msg['application.assessmentsUploadRequest.loader']}"/>
        <p:selectOneMenu id="idLoader"
                         style="width: 230px;"
                         required="true"
                         value="#{configurationBean.loaderName}">

            <f:selectItems value="#{configurationBean.loaders}"/>

        </p:selectOneMenu>

    </h:panelGrid>

    <p:fileUpload fileUploadListener="#{configurationAction.processConfigurationUpload}"
                  allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
                  update="messages"
                  mode="advanced"/>

</h:form>

ConfiguratioBean只是一个JSF@ViewScopedbean,其中包含loaderName的getter和setter。

我的配置操作bean:

@ManagedBean(name = Beans.CONFIGURATION_ACTION)
@ViewScoped
public class ConfigurationAction extends BaseAction {

    public void processConfigurationUpload(FileUploadEvent event) {

        ConfigurationBean configurationBean = getBean(Beans.CONFIGURATION_BEAN);

        UploadedFile file = event.getFile();

        addInfoMessage("Upload Successful");
    }

}

我收到文件时,我点击上传,但参数loaderName总是null配置Bean.如果我尝试切换文件上传到简单模式,把文件作为一个值在配置Bean,并有一个命令按钮上传单个文件,然后它是工作。但我需要上传是高级。所以问题是,如果PrimeFaces文件上传表单处于高级模式,如何将参数传递给后备bean?

共有1个答案

傅宏恺
2023-03-14

为此使用远程命令。例如:

<h:form id="idAssessmentsUploadForm" enctype="multipart/form-data">

    <h:panelGrid cellspacing="10" styleClass="standard-panel" columns="2" id="idAssessmentsUploadPanelGrid">

        <h:outputText value="#{msg['application.assessmentsUploadRequest.loader']}"/>
        <p:selectOneMenu id="idLoader"
                         style="width: 230px;"
                         value="#{configurationBean.loaderName}"
                         required="true">

            <f:selectItems value="#{configurationBean.loaders}"/>

        </p:selectOneMenu>

    </h:panelGrid>

    <p:fileUpload fileUploadListener="#{configurationAction.processConfigurationUpload}"
                  allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
                  required="true"
                  onstart="loadProperty()"
                  update="messages"
                  mode="advanced"/>

    <p:remoteCommand name="loadProperty">
        <f:setPropertyActionListener for="idLoader"
                                     value="#{configurationBean.loaderName}"
                                     target="#{configurationBean.loaderName}"/>
    </p:remoteCommand>

</h:form>

未经测试,但应能正常工作。

 类似资料:
  • 因此,在这里我将basePackages硬编码为“com.example”。这不是我想要的。我想通过命令行参数从终端运行应用程序时接收包名。有没有一种方法可以将命令行参数传递给应用程序,并使用我在BasePackages中接收到的参数?提前致谢

  • 问题内容: 我开始使用Grunt,并希望将变量传递给我通过exec运行的PhantomJS脚本。我想要做的是为脚本传递URL,以从中获取屏幕截图。任何帮助将不胜感激,谢谢! 达伦 咕script声脚本 screenshot.js 问题答案: 命令行参数可通过模块(Module )访问。第一个始终是脚本名称,然后是后续参数 该脚本将枚举所有参数,并将其写到控制台。 在您的情况下,解决方案是 咕unt

  • 问题内容: 我想知道是否有可能使用jQuery AJAX函数将数组传递给php函数。我有以下作为我的JavaScript 当我尝试执行以下操作时 我在PHP中将其作为“数组”接收。如何正确发送对象,以便PHP函数可以使用它? 问题答案: 从第二个ajax中,您可以根据属性名称访问数据,例如: 是在php中以关联数组转换的js对象

  • 我一直试图从一个对象数组填充一个JTable,但是什么也没有显示出来。下面是填充表的方法代码。system.out.println使我能够检查数据是否正确传递,变量中是否有值。这是来自界面的: 即使来自接口的数据显示在控制台中,也只显示表头。如果有人能解决如何正确地将数据值传递给JTable,那就太棒了!

  • 问题内容: 我正在尝试利用PrimeFaces 的星级评定组件。但是,它不允许您传递参数。这使我无法进行查找以从要评估的数据库中获取实体。我已经尝试过类似的方法,但是没有成功: 还有另一种方法可以将参数传递到动作类中吗?我缺少什么可以让我得到想要的行为的东西吗?谢谢你的帮助! 问题答案: 我终于想出了怎么做… 然后,在我的动作类中,我可以通过执行以下操作来获取selectedObj的值… 小菜一碟

  • 问题内容: 选择图像,doc或pdf后,我想将它们通过okhttp3。如何进行此操作? 并在okhttp 3中 显示的错误是 谢谢。 问题答案: 所以我自己回答这个问题。 因此,我首先将输出流打开到一个临时文件。 扩展名取决于mime类型。您可以通过以下方式找到mime类型 现在从文件读取并将其内容写入临时文件 现在写入文件 最后 成功之后的最后