【问题标题】:JSF2 uploading photo with primefaces problemsJSF2 上传带有 primefaces 问题的照片
【发布时间】:2013-02-19 20:41:29
【问题描述】:

我正在使用以下 sn-p 上传照片,使用 primefaces :

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
    <h:outputText value="PrimeFaces Single Upload"  />
    <h:form enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{uploadPhotoHandler.handleFileUpload}" mode="advanced"
            update="messages" label="Choose a file" sizeLimit="5242880" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
            invalidSizeMessage="The maximum file size allowed is 1 Megabyte !"
            invalidFileMessage="You are allowed to upload only images !" />
        <p:growl id="messages" showDetail="true" sticky="true" />

我正在将这个组合添加到主页中,即index.xhtml,使用以下命令:&lt;ui:include src="upload_img_form.xhtml" /&gt;

主页看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <script type="text/javascript" src="js/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="js/jquery-migrate-1.1.1.js"></script>
    <script type="text/javascript" src="js/jquery.ui.widget.js"></script>
    <script type="text/javascript" src="js/jquery.xdr-transport.js"></script>
    <script type="text/javascript" src="js/jquery.fileupload.js"></script>
    <script type="text/javascript" src="themes/jquery-ui-1.10.0.custom/js/jquery-ui-1.10.0.custom.min.js"></script>
    <link type="text/css" rel="stylesheet" href="themes/jquery-ui-1.10.0.custom/css/sunny/jquery-ui-1.10.0.custom.css" />
    <link type="text/css" rel="stylesheet" href="css/base.css" />
    <link type=" text/css" rel="stylesheet" href="css/styles.css" />
</h:head>
<h:body>
    <div id="container" class="container ">
        <ui:include src="upload_img_form.xhtml" />
    </div>
</h:body>
</html>

我有以下问题:

  • 进度条不起作用,
  • 取消按钮不起作用,最大的问题是 sizeLimit 不能验证作为输入给出的文件。
  • 即使这不是自动上传,文件也是自动上传的,之前没有点击上传按钮。

问题与head 部分100% 相关,因为如果我删除它,它就可以工作。不过,它不适用于同一页面中的其他功能,因此我必须保留 js 文件和 styles

感谢您的回复。

【问题讨论】:

  • SSCCE 会很有帮助。你的作文确实很奇怪。通常,h:headh:body 进入主模板,不会在子模板中重复。你有validated HTML 吗?另见stackoverflow.com/questions/4792862/…
  • @BalusC 我已经更新并试图更清楚地解决问题。该问题与主页的头部部分100%相关。 (我不知道为什么我无法格式化问题中的 main.xhtml 代码)。你能说吗?非常感谢。感谢您的帮助!
  • 你为什么要手动包括 jQuery 和所有在 em 上? PrimeFaces 已经自动包含 jQuery,它只会与您手动包含的 jQuery 冲突。至于代码格式,只需选择代码并在消息编辑器工具栏中按{}按钮。
  • 你知道,你有权利。当我开始使用 JSF 时(几天前),我没有使用 primefaces,所以这就是我手动添加 jquery 的原因。但是现在我已经删除了所有 js 的东西,一切正常..

标签: jsf-2


【解决方案1】:

摆脱手动包含的 jQuery。 PrimeFaces 已经自动包含自己的副本。如果它们是不同的版本,只会发生冲突,导致各种颜色的JS相关问题。如果您在浏览器的开发人员工具集中检查过 JS 控制台,您就会注意到这一点。

【讨论】:

  • 非常感谢您的帮助。我也非常感谢 SO 对 JSF 和网络相关内容的所有贡献。
  • 一个问题,不过:我一直在使用 jquery 的 menu() 功能。现在所有的jquery js都已经消失了,我有一个错误说Object对象没有方法菜单。我应该忘记 jquery 的东西而只专注于 primefaces 吗?或者它是一种使用 jquery 功能的方法(如果在 primefaces 中有 jquery 的副本)。谢谢
  • 您可以继续使用自己的 jQuery UI 副本。如果您碰巧有页面不一定使用 PrimeFaces 组件(因此不一定在所有页面上都有自动包含的 jQuery),那么您可以通过 &lt;h:outputScript library="primefaces" name="jquery/jquery.js" /&gt; 强制包含 PrimeFaces 捆绑的 jQuery。
  • 好的,但是我在这个页面中完全使用了“菜单”功能,如果我添加 jquery 库,我必须添加所有其他库,因为它们相互依赖。所以我回到原来的问题..
  • 由于答案中提到的原因,您确实需要并且不需要添加自己的 jQuery 副本。 PrimeFaces 不捆绑 jQuery UI(相反,它会根据 jQuery UI 语法自动生成 HTML 并仅捆绑 jQuery UI CSS 文件的自定义副本),因此您可以捆绑自己的 jQuery UI JS 文件副本(如果需要,还可以捆绑主题 CSS 文件最重要的是,PrimeFaces 不使用 entire jQuery UI 主题)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2017-03-18
  • 2013-12-26
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多