Icefaces 3.0.1 FileEntry:FileEntryListener 从未被调用

2024-01-02

1.1、IceFaces 3.0.1 和 JSF 2.1,并尝试与 ace:fileentry 一起使用。我不明白为什么监听者永远不会被调用!甚至 IDE 也会向我发送警告“pruebaBean.sampleListener 是未知属性”。 这是我正在做的事情的一个简短示例。当单击提交按钮时,没有任何反应。 有人能帮我吗 ??可能是某种错误?

普鲁巴.xhtml:

<?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 xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:ice="http://www.icesoft.com/icefaces/component"
       xmlns:ace="http://www.icefaces.org/icefaces/components">
 
 <h:head>
 </h:head>
 <h:body>
     <ice:form id="usuarioForm">
         <ice:panelGrid columns="2">
             <ace:fileEntry id="fileEntryImage" absolutePath="c:\iTablero\imagenes"
                             useSessionSubdir="false" useOriginalFilename="false"
                             fileEntryListener="#{pruebaBean.sampleListener}"/>
             <ice:commandButton type="submit" value="Subir archivo"/>
         </ice:panelGrid>
         <ice:messages/>
     </ice:form>
 </h:body>

PruebaBean.java:

 package com.itablero.backingbeans;

 import java.io.Serializable;
 import javax.annotation.ManagedBean;
 import javax.faces.bean.RequestScoped;
 import org.icefaces.ace.component.fileentry.FileEntry;
 import org.icefaces.ace.component.fileentry.FileEntryEvent;
 import org.springframework.stereotype.Controller;

 @ManagedBean
 @Controller
 @RequestScoped
 public class PruebaBean implements Serializable {
 
     public void sampleListener (FileEntryEvent e) {
         System.out.println("it work!");
         FileEntry fe = (FileEntry) e.getComponent();
         //some others operations
     }
 }

Update 1

感谢@fischermatte,我发现问题是将ice:commandButton 替换为h:commandButton。但是当我将其应用到原始完整表单时却不起作用。 fileEntryListener 方法永远不会被调用。有人可以看到这里的错误吗? 从逻辑上讲,前面的示例和下面的代码具有相同的 web.xml、faces-config.xml 等。注意提交文件的按钮是 h:commandButton,还有一个ice:commandButton 表示完整的表单。我已经尝试更改此 por en h:cb。 这是原始表单(显示在弹出/模式窗口中)和 bean:

usuariosList.xhtml

                <ice:panelPopup rendered="#{usuariosBean.showPopup}"
                            visible="#{usuariosBean.showPopup}"
                            modal="true"
                            autoCentre="true">

                <f:facet name="header">
                    <h:panelGroup>
                        <h:panelGroup style="float: left;">
                            Usuario
                        </h:panelGroup>
                        <h:panelGroup style="float: right;">
                            <ice:form>
                            <h:commandButton image="/resources/images/popup-close.png"
                                            alt="Cerrar" title="Cerrar"
                                            style="height: 11px; width: 11px; border: 0;"
                                            action="#{usuariosBean.closePopup}"/>
                            </ice:form>
                        </h:panelGroup>
                    </h:panelGroup>
                </f:facet>
                <f:facet name="body">
                    <ice:form id="usuarioForm">
                        <ice:panelGrid columns="2">
                            <p>Nombre:</p>
                            <ice:inputText id="nombre" label="nombre" value="#{usuariosBean.usuario.nombre}" size="40" />
                            <p>Imagen:</p>
                            <ice:graphicImage value="#{usuariosBean.usuario.imagen}"/>
                            <ace:fileEntry id="fileEntryImage" absolutePath="c:\iTablero\imagenes"
                                            useSessionSubdir="false" useOriginalFilename="false"
                                            fileEntryListener="#{usuariosBean.formListener}"/>
                            <h:commandButton type="submit" value="Subir archivo"/>
                        </ice:panelGrid>
                        <ice:messages for="usuarioForm"/>
                        <ice:commandButton value="Guardar" action="#{usuariosBean.save()}" />
                    </ice:form>
                </f:facet>                    
            </ice:panelPopup>

UsuariosBean.java

package com.itablero.backingbeans;

import com.itablero.excepciones.DAOException;
import com.itablero.modelo.Usuario;
import com.itablero.servicios.AdminService;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.icefaces.ace.component.fileentry.FileEntry;
import org.icefaces.ace.component.fileentry.FileEntryEvent;
import org.icefaces.ace.component.fileentry.FileEntryResults;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@ManagedBean
@Controller
@ViewScoped
public class UsuariosBean implements Serializable {

@Autowired
private AdminBean adminBean;
@Autowired
private AdminService adminService;
private Usuario usuario = new Usuario();
private boolean showPopup;

//getter and setters 

public boolean isShowPopup() {
    return showPopup;
}

public void setShowPopup(boolean showPopup) {
    this.showPopup = showPopup;
}


public void openPopup() {
    this.showPopup = true;
}

public void closePopup() {
    this.showPopup = false;
    this.usuario = new Usuario();
}

public String edit(Usuario usuario) {
    this.usuario = usuario;
    this.showPopup = true;
    return "usuariosList";
}

public String delete(Usuario usuario) {
    adminService.delete(usuario);
    return "usuariosList";
}

public String save() {
    try {
        usuario.setTutor(adminBean.getLoggedTutor());
        adminService.save(usuario);
    } catch (DAOException ex) {
        Logger.getLogger(TutoresBean.class.getName()).log(Level.SEVERE, null, ex);
    }
    usuario = new Usuario();
    this.showPopup = false;
    return "usuariosList";
}

public void formListener(FileEntryEvent e) {
    System.out.println("Entro");
    FileEntry fe = (FileEntry)e.getComponent();
    FileEntryResults results = fe.getResults();
    //other stuff
}

}

Update 2

我想我找到了为什么不起作用,但需要一些帮助来修复。我按照 @fischermatte 的建议进行了更正,但没有成功。

要使用表单到达此页面,首先必须导航并抛出主页/admin/admin.html,如果浏览器中出现 URLhttp://localhost:8084/iTablero/admin/admin.html。该页面有一个菜单,该菜单选项之一将我带到有问题表单的页面。但是,因为是 AJAX 调用(如果我没记错的话),浏览器中的 URL 不会改变,它会保留http://localhost:8084/iTablero/admin/admin.html。并且 fileEntry 永远不会调用侦听器。 现在,如果我自己输入 URLhttp://localhost:8084/iTablero/admin/usuariosList.html,页面像以前一样正确显示,但现在文件条目工作完美! 我不知道如何解决这个问题,必须使用重定向吗?我认为是关于 AJAX 的问题......请帮忙! :-D


Update 3

那是菜单,没有重定向就不起作用。

       <h:form>
            <ice:menuBar orientation="horizontal">
                <ice:menuItem value="Tutores" action="tutoresList"/>
                <ice:menuItem value="Usuarios" action="usuariosList"/>
                <ice:menuItem value="Tableros" action="tablerosList"/>
                <ice:menuItem value="Simbolos" action="simbolosList"/>
                <ice:menuItem value="Estadisticas" action="estadisticas"/>
                <ice:menuItem value="Salir" action="#{adminBean.logout()}"/>
            </ice:menuBar>
       </h:form>

With action="usuariosList?faces-redirect=true"工作正常。 已经测试过向前导航到仅具有 FileEntry 的基本页面表单,但也不起作用。同样,如果我使用重定向,效果很好。我认为这个组件和前向导航存在某种问题。


您必须使用 JSF 的命令按钮而不是icefaces 的:<h:commandButton type="submit" value="Subir archivo"/>。这是 ICEFaces 中的一个已知问题,请参阅ace:fileEntry 维基 http://wiki.icesoft.org/display/ICE/FileEntry.

Update 1

另外,您可以删除弹出窗口中呈现的属性,也可以在打开弹出窗口时更新弹出窗口,如下所示:

<h:form>
    <h:commandButton value="Show Popup" action="#{usuariosBean.showPopupAction}">
        <f:ajax render=":popupPanelGroup"/>
    </h:commandButton>
</h:form>
<h:panelGroup id="popupPanelGroup">
    <ice:panelPopup visible="#{usuariosBean.showPopup}" rendered="#{usuariosBean.showPopup}" modal="true" autoCentre="true">
     ...
    </ice:panelPopup>
</h:panelGroup>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Icefaces 3.0.1 FileEntry:FileEntryListener 从未被调用 的相关文章

  • 在 Django 中 AJAX 发布后重定向

    我使用 Django 的内置 DeleteView 并为success url属性 现在在我的模板中 我通过 JQuery 的 post 方法触发此视图 当该项目被删除时 我不会被重定向到success url 经过一番查找 发现好像是AJ
  • Google 地图 api V3 - 从查询结果动态添加多个标记

    我正在尝试在页面上设置一个地图 并在其下方设置几个链接 单击这些链接时 将动态查询我的数据库并在地图上输出结果集 我花了很多时间在谷歌上搜索这个 但找不到我想要的东西 我已经使用 AJAX 返回纬度和经度坐标了 但是当尝试在地图上创建标记时
  • 选择所有相同类元素并存储在字符串中

    我有一个页面 其中有用户留下的评论 每个帖子都有自己的 id 存储在隐藏的输入标记中 为了动态获取最新帖子 我需要知道所有帖子的 id 并将它们放在字符串中 每个id需要用逗号分隔 例如 HTML 标记 div class msgPost
  • 找出 Jquery ajax 请求被重定向到的位置

    所以 我收到了这个ajax请求 请参阅 金发女郎 大约6英尺高 看起来像这样 ajax url http example com makeThing dataType html type POST data something someot
  • 如何跨页面播放背景音乐

    我已经读过这个问题 我知道它只能用框架来完成 我真的不想要全站点 AJAX 如何在多个 HTML 页面上播放背景音频 https stackoverflow com questions 4210370 how to play a backg
  • 有没有办法从 javascript 中的子函数调用父函数的 Return ?

    我遇到了一个非常特殊的案例 我想要return一些数据 通过ajax下载的数据 到目前为止 异步和同步模式无法及时获取数据return 我可以打电话吗return从子函数到父函数或者超时可以解决问题吗 我想不出另一种方法来做到这一点 但数据
  • 当用户点击后退按钮返回上一个网页时,如何再次调用ajax?

    下面是我的代码 HTML 代码 div class body div class dropdown div div div
  • 使用 javascript 而非 jQuery 的简单 ajax 表单

    我正在使用一个表单 其标记我无法更改且无法使用 jQuery 目前 该表单将结果发布到新窗口 是否可以将其更改为 ajax 表单 以便在提交时显示结果而不更改任何标记 将结果 标记 从结果页面拉回到表单页面 这是表单的标记
  • 未为 OPTIONS Ajax 请求设置标头

    我有一个ascx page GetToken ashx public void ProcessRequest HttpContext context context Response ContentType text plain conte
  • 使用 Laravel 在 Bootstrap 模式中动态加载表单

    我正在开发应用程序 它需要引导模式中的表单 并且还动态加载表单 我面临的问题是所有页面都再次以模式加载 这里有人为此提供任何例子吗 控制器 public function loadJsModalForm return View make f
  • 如何从ajax调用php函数?

    我熟悉如何让ajax转到php页面并执行一系列操作然后返回json数据 但是 是否可以调用驻留在给定页面中的特定函数 基本上我想要的是减少项目中的文件数量 所以我可以把很多常用的函数放在一个页面中 然后只调用我现在想要的任何函数 对于 AJ
  • 当打开客户端状态保存时,ViewScoped beans 是否序列化到页面?

    我们打开了客户端状态保存并使用 ViewScoped 支持 bean 当客户端状态保存打开并且我们正在使用 ViewScoped bean 时 ViewScoped bean 是否会序列化到页面 或者是否使用序列化到页面的令牌 密钥存储在会
  • Maven安装错误找不到javax.el.E​​LContext和找不到javax.el.E​​LResolver

    我正在使用 Maven 3 和 JDK 1 7 当我尝试做的时候mvn install 我收到以下错误 ERROR domain view EmployeeNameConverter java 29 76 cannot access jav
  • 如何在ListBox中加载大量数据? ASP.NET MVC 应用程序

    我正在使用 ASP NET MVC 应用程序 要求用户能够从可能包含超过 30 000 个条目的列表框中选择一个项目 是否有一种使用 Ajax 调用来填充此 ListBox 内容的动态方法 效果良好 我是否最好只填充服务器上的 ListBo
  • 在 weblogic 10.3 中部署最新 JSF 版本的步骤

    我要开始一个新项目 我正在考虑使用 JSF 最新版本 但我们的 weblogic 服务器版本是 10 3 我不确定在 weblogic 10 3 中部署 JSF 2 应用程序要遵循的所有步骤 并且也想了解支持开发JSF2应用程序的IDE 目
  • MVC:如何使用ajax?

    我将使用 Zend Framework MVC 实现启动一个项目 我如何使用ajax 我的意思是 我应该将所有 ajax 代码放入控制器中吗 还是进入视野 例如 我想将作者 ivan 的帖子显示在页面上 通常 我创建一个指向 posts a
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 从 HTTP 登录到 HTTPS

    我的网站默认使用 HTTP 我确实有一个启用 HTTPS 的证书 但只有其上的某些区域强制建立安全连接 登录是通过 Ajax 处理的 我想开始使用 SSL 即使请求来自 HTTP 我尝试强制请求的地址具有 HTTPS 并且它完美地回复 然而
  • 简单的 AJAX 示例 - 从 txt 文件加载数据

    我正在尝试编写一个基本的 AJAX 教程 将文件 hello txt 中的数据读取到我的网页中 hello txt和我当前的html网页位于同一目录中 有谁知道我做错了什么 当我加载页面时什么也没有发生
  • 使用 jQuery 从 CKEditor 的 iframe 中获取内容

    我有一个自定义编写的 CMS 它使用CKEditor http ckeditor com FCKEditor v3 用于编辑内容 我也在使用jQuery 验证 http bassistance de jquery plugins jquer

随机推荐

  • 在圆形叠加层中绘制文本

    我正在尝试在 MKMapView 上绘制一些包含文本的圆形叠加层 我对 MKCircleView 进行了子类化 在其中放置了以下内容 基于this https stackoverflow com questions 4165842 draw
  • 主键违规错误后继续事务

    我正在从日志文件将记录批量插入数据库 有时 每千行中约有 1 行 其中一行违反了主键并导致事务失败 目前 用户必须手动检查导致失败的文件并删除有问题的行 然后才能尝试重新导入 鉴于有数百个这样的文件需要导入 这是不切实际的 我的问题 如何跳
  • 可以使用 CSS 设计 Tkinter GUI 样式吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果不是内置功能 是否有附加包允许 Python 的 Tkinter 使用 CSS 如果您可以使用 CSS 则无法以相同的方式设置样式
  • 如何从句子中标记的 word2vec 中获取句子的向量

    我已经使用 word2vec 从大型文档中生成了标记列表的向量 给定一个句子 是否可以从句子中标记的向量得到该句子的向量 有不同的方法来获取句子向量 Doc2Vec 您可以使用 Doc2Vec 训练数据集 然后使用句子向量 Word2Vec
  • Web 配置中的“全局元素‘配置’已被声明”

    我在网络配置中收到烦人的构建警告 我收到了大约 40 条警告Global element element name has already been declared对于我的网络配置中的所有元素 这是针对我在与 MVC 网站相同的解决方案中
  • 当非管理员尝试访问 wp-admin 或 wp-login.php 时,如何将用户重定向到 404 页面未找到错误

    出于安全原因 我试图通过重写链接来限制我的 WordPress 网站管理员和登录面板对非管理员用户的访问 这样如果用户输入http www mysite com wp login php http www mysite com wp log
  • 传入 Apple 推送通知的端口号

    需要在网络上打开哪些网络服务 端口号 传出传入或两者同时打开 iPod touch 才能接收 Apple 推送通知 我知道发送 apns 时要设置的传出端口号 唯一的问题是 在我的学校 几乎每个传出 和传入 端口都被阻止 因此 APN 不起
  • 如何让 mongo 映射器在 Rails 4 中生成 config/mongo.yml 文件

    我正在尝试使用 Mongo Mapper gem 制作一个 Rails 应用程序 我按照 Mongo Mapper 文档中的说明进行操作 链接在这里 Mongo 映射器文档 http mongomapper com documentatio
  • 可排序 + 可拖动演示 - 如何访问放置的项目?

    我有一个可排序的列表 当一个新项目 从可拖动的项目 放入列表中时 我想访问它以对其执行一些操作 这就是我所拥有的 mySortableList sortable receive function event ui alert this is
  • 在 Objective C 类别中使用 Super?

    我想重写 Objective C 类中的一个方法 但我没有源代码 我已经研究过了 看来类别应该允许我这样做 但我想在我的新方法中使用旧方法的结果 使用 super 来获取旧方法的结果 每当我尝试这个时 我的方法都会被调用 但 超级 为零 知
  • Google 脚本,根据上次修改日期删除文件夹中的文件

    我正在尝试创建一个脚本 该脚本每周一次通过共享驱动器运行 并删除过去 90 天内未修改的任何内容 我在这里发现了一些脚本似乎没有按照我的预期工作 我目前拥有的脚本如下 但由于某种原因它似乎不起作用 但似乎应该起作用 它似乎识别了文件 但似乎
  • eval 有什么作用以及为什么它是邪恶的? [复制]

    这个问题在这里已经有答案了 var myString x myObject x 10 value eval myObject myString alert value alert myObject myString 评估是邪恶的 http
  • Excel 多行条件色标

    我有一个电子表格 显示一系列产品的库存数据 我每天都有一个专栏 其中的值显示我的库存水平将如何随着时间的推移而减少 我想使用色标来轻松查看某些产品的库存何时会变少 我的量表的最小值 中值和最大值基于不同列中的值 并且每个产品的值都不同 根据
  • 使用 java 获取便携式设备

    我正在尝试访问设备中的一些文件 具有 Windows CE 其中的应用程序 显示为便携式设备在 windows 7 中使用 java applet 我的设备路径是这样的 Computer Attari s Device myfile txt
  • Doctest 无法识别 __future__.division

    我写了以下文档测试x doctest This is something gt gt gt x 3 4 foo bar something else gt gt gt from future import division gt gt gt
  • 定时器和线程的问题

    我是一个通过实例学习的 C 程序员 水平不是很先进 这就是为什么这个问题完全难住了我 无论互联网上有多少信息 我本质上是在创建一个程序 该程序在计时器上重复轮询网站以获取一些信息 在此过程中 将创建一个 WebBrowser 控件来导航到信
  • Apple 登录时出现错误“Invalid_client”firebase android

    我们为 Apple 所做的一切 登录 在 Firebase 中 我们设置 service id keyID 私钥 团队 ID 在 Android 代码中 我们做了与文档相同的操作 尽管如此 我们仍然面临苹果的问题 以无效客户端身份登录 经过
  • 检查: git rebase 是否完成?

    这是 git rebase 的替代方案 https stackoverflow com questions 39603553 alternative to git rebase 39605048 noredirect 1 comment66
  • 在 Rust 测试中,如何使用 NEAR 协议检查帐户的状态(帐户余额)?

    在 Rust 测试中 如何检查帐户的状态 帐户余额 例如 我有这个辅助函数 fn set context account index usize is view bool deposit Amount let context VMConte
  • Icefaces 3.0.1 FileEntry:FileEntryListener 从未被调用

    1 1 IceFaces 3 0 1 和 JSF 2 1 并尝试与 ace fileentry 一起使用 我不明白为什么监听者永远不会被调用 甚至 IDE 也会向我发送警告 pruebaBean sampleListener 是未知属性 这