转换器类抛出异常 java.lang.IllegalArgumentException

2023-12-04

我的 JSF 页面中有 p:selectOneMenu,当我运行 JSF 页面时,我从 Converter 类中收到以下异常。

java.lang.IllegalArgumentException: object 5634 is of type java.lang.String; 
expected type: test.entity.Employee

我该如何解决这个问题?

我在实体类中有以下内容

@Entity
public class Employee implements Serializable {

private String employeeNumber;
private String employeeName;

/* getters and setters */

EmployeeConverter类

@Component("employeeConverter")
@FacesConverter(forClass = Employee.class)

@Inject
EmployeeService employeeService;

@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {

    if (value == null || value.length() == 0) {
        return null;
    }
    EmployeeService employeeService= (EmployeeService ) facesContext.getApplication().getELResolver().
            getValue(facesContext.getELContext(), null, "employeeService");
    return employeeService.getEmployees();
}

@Override   
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {

            if (object == null) {
                return null;
            }
            if (object instanceof Employee) {
                Employee emp = (Employee) object;
                String val = emp.getEmployeeNumber();
                return val;
            } else {
throw new IllegalArgumentException("object " + 
object + " is of type " + object.getClass().getName() + "; expected type: " +
Employee.class.getName());
            }
}

并在jsf页面中

 <p:selectOneMenu value="#{mb.employee}" converter="#{employeeConverter}">
 <f:selectItems value="#{cmb.employeeList}" var="emp"
 itemLabel="#{emp.employeeName}" itemValue="#{emp.employeeNumber}"/>
 <p:ajax  listener="#{mb.handleChange}"  process="@this"/>
 </p:selectOneMenu>

Update 1

改进的转换器方法getAsObject

private List<Employee> employee;

@Override
    public Object getAsObject(FacesContext facesContext, UIComponent component,
            String value) {
        System.out.println("reached in converter");
        try {
            if (value == null || value.length() == 0) {
                return null;
            } else {
                employee = getEmployeeService().getEmployees();
                for (Employee emp : employee) {
                    if (emp.getEmployeeNUmber() == value) {
                        return emp;
                    }
                }
            }

        } catch (Exception e) {
            System.out.println("exception from getAsObject  " + e.getMessage());            
        }
        return null;
    }

Update 2

ManagedBean

@PostConstruct
    public void loadEmployees(){

        try {           
            List<Employee> emp = getEmployeeService().getEmployees();           
            employeeList = emp; 

        }
        catch(Exception e){
            e.printStackTrace();
            System.out.println("exception from loadEmployees "+e.getMessage());
        }

    }

不要将字符串分配给项目值,您需要分配转换后的对象(Employee)本身。

改成itemValue="#{emp}"

请参阅 BalusC 对此的回答question.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转换器类抛出异常 java.lang.IllegalArgumentException 的相关文章

  • Android update 17 似乎与外部 Jars 不兼容

    我刚刚允许我的 Mac 对其 Java 安装进行更新 现在我的一些旧罐子 例如javax mail and apache commons httpclient 正在投掷 找不到类 运行时异常 意思是 它们编译得很好 但在运行时崩溃 出现如下
  • 将 for 循环转换为 concat String 为 lambda 表达式

    我有以下 for 循环 它迭代字符串列表并将每个单词的第一个字符存储在StringBuilder 我想知道如何将其转换为 lambda 表达式 StringBuilder chars new StringBuilder for String
  • CompletableFuture 强制重用线程

    我正在批判性地利用 CompletableFuture delayedExecutor 1 TimeUnit MILLISECONDS execute gt 根据我在网上阅读的内容 每次调用都使用一个新线程是很常见的 我想知道是否有办法重用
  • spring依赖注入会创建单例对象吗?

    spring内部是如何管理这些对象的呢 单例对象什么时候创建和销毁 默认情况下 Spring bean 基本上是单例的 Spring 将为每个类创建一个实例 并且通常会在 Spring 初始化时执行此操作 然而 这几乎是无限可定制的 Spr
  • 使用 Apache Commons File Upload 解析 multipart/form-data

    Apache Commons File Upload 包是否提供了流解析的通用接口multipart form data块通过InputStream 附加Array
  • 为什么java.util.Collection不直接定义next()、hasNext()呢?

    If 收藏定义有下一个 代替迭代器 hasNext 我们可以更容易地编写循环 while collection hasNext 代替 Iterator it collection iterator While it hasNext 当然 我
  • EventQueue.invokeLater vrs SwingUtilities.invokeLater

    有人可以强调这两者之间的差异以及两者都是必需的实例吗 我有一个可以互换使用两者的应用程序 但想知道其中一个是否比另一个更好 显然他们都接受Runnable object 对我来说 我想我可以使用我喜欢的那个 为什么这两个相似的功能在不同的类
  • 如何将背景图像设置到 JPanel 中的 JTextArea

    我想在JTextArea 我在谷歌上查找过 但没有结果 背景可能是一个标志 我也想知道如何设置背景的分辨率 我的包中只有一门课 我有一个 MySQL 连接器驱动程序作为参考库 我的工作台是 Eclipse 使用 Fat jar 插件导出 j
  • 请求的操作:声明您的广告 ID 权限

    今天我收到这封电子邮件 去年 7 月 我们宣布了广告政策变更 以帮助加强 安全和隐私 我们对使用的标识符添加了新的限制 针对儿童的应用程序 当用户选择删除他们的 广告 ID 以选择退出个性化广告 如果满足以下条件 开发人员将收到一串零而不是
  • 用 Maven 解决 jar 地狱问题?

    我正在使用两个 jars A 和 B B 是一个库 A 的类使用库 B 中的一些旧类 现在 当我将这两个 jars 包含在我的项目类路径中时 这给我带来了一个问题 因为它们的名称相同两个班级 但其中一个班级比另一个班级年长 并且行为方式不同
  • 当我收到 java.lang.NoClassDefFoundError: javax/ws/rs/client/RxInvokerProvider 错误时缺少什么依赖项?

    我有一个小项目 出于测试目的 我通过单元测试执行我的 jersey 2 客户端 但是 不幸的是 我收到了错误 我不知道还缺少什么依赖项 目前泽西岛的网页因维护而关闭 我把pom xml的相同相关部分 测试代码和测试代码也附上了 public
  • Java 将字符串拆分为单词逗号和句号

    我一直在使用myString split s 得到每个单词 但现在我想把逗号和句号也分开 例如 妈妈总是说生活就像一盒巧克力 你永远不知道会得到什么 to Mama always said life was like a box of ch
  • 升级到 Gradle 2.0 后:在根项目上找不到属性“Compile”

    为了避免在构建 Java 源代码时出现有关特殊字符的警告 我将此行放在我的gradle build在升级到 Gradle 2 0 之前运行良好 tasks withType Compile options encoding UTF 8 升级
  • Java 8 元空间垃圾收集

    我正在运行的 java 进程在运行的第一个小时左右始终表现良好 然而 性能会迅速下降 在分析时 我发现元空间垃圾收集相当频繁地发生 直到小时标记 然后失去控制 我相当确定我能够使用 XX MaxMetaspaceSize 选项来解决此问题
  • 远程数据库的“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障”

    我尝试连接到远程 MySQL 数据库 但失败并收到此错误 com mysql jdbc exceptions jdbc4 CommunicationsException Communications link failure 困惑的是 当我
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • hibernate中映射到数据库表的bean的默认继承策略是什么?

    这是我在 stackoverflow 中的第一个查询 我想我正在提供所有必要的输入 我已经提供了我的 Java bean 和数据库表详细信息如下 Java Bean 类 import java sql Timestamp import ja
  • Guava Splitter/Joiners 每次使用时都应该创建吗?

    Guava 包含用于拆分和连接字符串的实用程序 但它需要实例化 Splitter Joiner 对象才能执行此操作 这些是小对象 通常仅包含要分割 合并的字符 维护对这些对象的引用以便重用它们是一个好主意 还是在需要它们时创建它们并让它们被
  • 可选的比较器

    I have abstract class OptionalComparator
  • 如何更改 Java 中不同类的变量?

    如何更改 Java 中不同类的变量 我正在尝试更改另一个类中的变量 然后在第一个类中使用它 我在 First 类中创建了一个变量 并将其值设置为 1 然后我尝试在 Second 类中将同一变量的值更改为 2 但是当我在 First 类中使用

随机推荐

  • SupportMapFragment 或 GoogleMap 为 null

    设法使代码没有错误 但是在启动时 我总是在 mMap mapFrag getMap 行处收到空指针异常 为什么会这样呢 我是否缺少一些导入或一些步骤 我不确定是否是 SupportMapFragment 或 GoogleMap 对象导致了问
  • Plone 中是否有一种简单的方法可以在新用户加入门户时收到电子邮件通知?

    我希望每当新用户加入门户时都会向门户电子邮件地址发送电子邮件通知 我的猜测是我应该编写一个新产品来做到这一点 这样的产品是否已经存在 针对 Plone 4 我检查了内容规则 但据我所知 只有当我让用户对膜 记住之类的东西感到满意时 它才能起
  • 使用 PHP xmlwriter 在 xml 文件中添加多个数据

    我需要为每个月添加文章xml使用 PHP 文件xmlwriter sql SELECT YEAR FROM UNIXTIME timestamp AS YEAR MONTH FROM UNIXTIME timestamp AS MONTH
  • d3.js:从文件中绘制地图上两点之间的弧

    我是 d3 js 的新手 正在尝试一些简单的事情 我绘制了一张读取 file1 和 file2 的世界地图 file2 按索引 ID 纬度和经度列出机场 file1 通过机场的索引 ID 来对机场进行配对 我想画一条弧线 一条线或任何东西来
  • 依赖性跟踪功能

    我只是想知道是否有人知道如何在运行后自动创建视图DROP CASCADE 现在我试图首先放弃经典的视图DROP VIEW myview语句 如果我无法删除视图 因为其他对象仍然依赖于它 那么检查 postgres 列出的所有对象名称并保存它
  • Reactjs读取属性文件?

    我在寻找解决方案时遇到困难如何在reactJS中读取属性文件 我读过您可以使用模块 properties reader 但我似乎无法使要求工作 有简单的方法吗 例如 import React Component from react imp
  • Github - 需要有关发出拉取请求的帮助

    我分叉了一个项目 进行了更改 C1 并提出了仍待处理的拉取请求 一周后 我想提出另一个带有更改的拉取请求 C2 与此同时 上游 我分叉的地方 发生了很多变化 所以我想将我的 master 与上游同步 并且需要单独提供带有更改 C2 的拉取请
  • 类型或命名空间“Mvc”名称在命名空间“System.Web”中不存在

    我有一个使用 RazorEngine 生成电子邮件的类库 RazorEngine 使用 Mvc 我在我的库类中引用了 System Web Mvc 将其设置为复制本地 并且它存在于 Bin 文件夹中 但是我仍然得到这个例外 我让它工作的唯一
  • 这是在我的程序中嵌入调试消息的好方法吗? (宏)

    在 Debug h 文件中 我有以下内容 ifdef DEBUG FLAG define DEBUG msg std cerr lt lt msg lt lt std endl else define DEBUG msg for true
  • 托管 C# dll 上的 GetProcAddress

    我正在尝试通过 LoadLibrary 加载 C dll 我能够成功加载它 您能告诉我如何使用此 dll 的 GetProcAddress 以便我可以使用此 dll 中定义的方法和类型吗 提前致谢 EDIT 1 解决此问题的最佳方法是 CO
  • Web USB 从设备到浏览器传输数据无法正常工作

    上面是我的设备配置 我正在尝试从中获取数据 我正在使用下面的代码来获取数据 document getElementById request onclick function navigator usb requestDevice filte
  • java httpssession有效吗?

    我在 tomcat 中使用 java servlet API 我将用户名和带有属性用户名的 httpsession 保存在哈希表中 我想知道是否有办法检查 httpsession 是否有效 我试过了 try String user http
  • Google Chrome 错误 - 溢出:自动 |滚动不起作用

    这是我在 Chrome 中的网站 文本在框外运行 这是在 IE 中没有问题 这是相关的CSS section height 1000px width 670px border thick solid rgb 51 97 120 border
  • windows和spyder中的python多处理问题

    我的大学有一个关于 python 多重处理的项目 对于我的 python 项目 我在 Windows 中使用spyder 因此 我尝试在spyder中运行一个非常简单的多处理代码 但每次我运行它时 spyder控制台都会冻结并且永远不会完成
  • 手动为 boost 的图表着色

    我正在努力尝试使用 boost 手动为图的顶点着色 我写了下面的代码 但我不明白为什么生成的文件没有任何颜色 int main int char typedef property
  • 为什么不能在循环中隐藏局部变量?

    我遇到了这种情况 我无法理解阴影 例如下面的代码 class Foo int a 5 void goFoo int a No problem naming parameter as same as instance variable for
  • 构建管道的保存被禁用

    我已经填写了构建管道的所有选项 并且没有错误消息 如何找出 保存 按钮被禁用的原因 如果我转到顶部菜单上的 触发器 那么我可以在 持续集成 下看到一些需要注意的设置 在我的屏幕截图中 红色的小错误图标实际上在 触发器 一词的映衬下可见 您必
  • 在 Razor 邮件模板中使用 @Html.Raw 渲染 HTML 内容

    使用 Razor 页面作为邮件模板我尝试使用显示邮件内容 Html 内容 Html Raw Model Content 每当我运行代码时 我都会收到此错误 html does not exist in current context 我试过
  • 如何获取 CheckboxColumn Gridview 中选定的数据/项目行 - Yii2

    我在使用 checkboxColumn 获取所有选定值 数据 Yii2 Gridview 时遇到问题 我只能得到one of the value in the grid使用此代码 class gt yii grid CheckboxColu
  • 转换器类抛出异常 java.lang.IllegalArgumentException

    我的 JSF 页面中有 p selectOneMenu 当我运行 JSF 页面时 我从 Converter 类中收到以下异常 java lang IllegalArgumentException object 5634 is of type