javax.el.PropretyNotWritableException:类 Article 没有可写属性“id”

2024-01-04

我有一篇文章 DTO(Article.java;代码摘录)

public class Article {

private int id;

public Article() {
    this.id = 0;
}

public Integer getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

我得到了一个用于编辑文章的视图模板(edit_article.xhtml;代码摘录):

            <h:form id="article_form">
                <p:messages id="messages"/>
                <h:panelGrid columns="2">
                    <h:outputText value="" />
                    <h:inputHidden id="articleId" value="#{hqArticleView.article.id}" converter="javax.faces.Integer" />

                </h:panelGrid>
            </h:form>

我有一个视图支持 bean(HqArticleView.java;代码摘录):

@Named("hqArticleView")
@RequestScoped
public class HqArticleView implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private Logger log;

@Inject
private IArticleService articleService;

private Article article;
private List<Article> articles;
private Map<String, String> requestParams;

@PostConstruct
private void init() {
    log = LoggerFactory.getLogger(getClass());

    requestParams = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

    article = new Article();
    article.setPublish(true);

    if (requestParams.containsKey("id")) {
        article.setId(Integer.parseInt(requestParams.get("id")));
        article = articleService.getArticle(article);
    }
}

public Article getArticle() {
    return article;
}

public void setArticle(Article article) {
    this.article = article;
}

public List<Article> getArticles() {
    articles = articleService.getAll();
    Collections.reverse(articles);
    return articles;
}

public void save() {
    log.debug("save pressed");
}

public void edit(Article article) {
    log.debug("edit pressed | id=" + article.getId());
}

public void delete(Article article) {
    log.debug("delete pressed | id=" + article.getId());
}
}

问题是:我尝试访问视图时收到错误:类 Article 没有可写属性“id”。 文章中的所有其他字段均已正确处理,只有 id 是问题。 奇怪的是,当我将 Article 对象的 id getter 和 setter 包装在 bean 中时:

public void setId(int id){
    this.article.setId(id);
}

public int getId(){
    return this.article.getId();
}

然后它就完美地工作了。我缺少什么?


当检查要读取的属性类型时,EL 会查看 getter 的返回类型:

public Integer getId() {
    return id;
}

这是这样的类型Integer。当 EL 需要写入更改后的值时,EL 期望使用相同类型的 setter:

public void setId(Integer id) {
    this.id = id;
}

但是,您的中不存在这样的设置器Article班级。相反,你有一个二传手int。这正是 EL 抛出的原因PropertyNotWritableException。这意味着它找不到采用完全相同类型的匹配设置器。通过使用相应地修复它Integer代替int在设置器中(或者,在这种特殊情况下更好,通过使用int代替Integer在吸气剂中)。

当您在控制器中分解模型时(顺便说一句,这是不好的做法),它起作用是因为 getter 和 setter 彼此匹配。

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

javax.el.PropretyNotWritableException:类 Article 没有可写属性“id” 的相关文章

随机推荐

  • GHC生成的.hi、.p_hi和.dyn_hi文件有什么区别

    我正在尝试减少包含 Nix 派生的存档的大小 我注意到每个模块都有 3 个文件 hi p hi 和 dyn hi 大小都相似 ghc 提示 解释器只需要 hi 如果我删除其余变量 则什么也不会发生 那么 p hi 和 dyn hi 是沙袋吗
  • 在 Django 中使用 formset_factory

    我是 Django 的新用户 我使用以下代码生成表单 class GetMachine forms Form Machine Name forms CharField max length 20 Number of lines forms
  • 如何限制Python 3中多线程程序中的API调用?

    经过大量研究 我不确定最佳实践是什么 我的以下想法是否合适 我想要访问一个 API 该 API 将我可以进行的调用总数限制为每分钟 50 次 我的程序有多个独立运行的线程 如何限制我的程序保持在阈值以下 我的想法是创建一个队列 并每 X 秒
  • 优化与未优化构建的 KCachegrind 输出

    I run valgrind tool callgrind executable在由以下代码生成的可执行文件上 include
  • 未知的底部 blob“数据”(层“conv1”,底部索引 0)

    尝试在我自己的数据集上训练 LeNet 我从长一维矢量数据集生成了 HD F5 文件 并创建了 HDF5 数据层 如下所示 我对顶部 blob 的命名与生成 HDF5 时的命名相同 name Test net layer name data
  • 导出大型 MySql 表

    我在 MySql 中有一个表 我使用 PhpMyAdmin 进行管理 目前约有 960 000 行 我有一个老板喜欢看Excel中的数据 这意味着每周我都要将数据导出到Excel中 我正在寻找一种更有效的方法来做到这一点 因为我实际上无法一
  • Pattern.matches() 针对 char 数组,无需在 java 中转换为 String

    Scenario 我需要根据字符数组检查正则表达式模式 char 出于安全考虑 我不允许将字符数组转换为字符串 Java 的 Pattern matches 方法旨在获取模式和字符串 另外 正则表达式模式是从另一个来源传递给我的 并且会发生
  • AWS ELB 中的双栈前缀是什么意思?

    当我在 AWS Route 53 中添加 ELB 作为别名目标时 它会自动添加dualstack我的 ELB DNS 的前缀 这代表什么 当我尝试时dig 两者都返回相同的端点 注意 这是一个内部负载平衡器 The dualstackDNS
  • 可以让 WinDBG 在符号存储中找到 mscordacwks.dll 吗?

    问题 有很多手动方法可以让 WinDBG 在没有符号存储的情况下找到 mscordacwks dll 将文件放在某个路径中 将其放在与 Windbg exe 相同的文件夹中 将其放在我的 Framework v 文件夹中 在使用WinDBG
  • 图书馆的数据库架构

    我正在为我的大学的一个部门设计一个图书馆管理系统 我想吸引您关注我提出的架构 这篇文章主要涉及我们如何存储每本书的多个副本 我设计的一些东西让我感到不舒服 我希望你们都能指出更好的方法来解决问题 为了处理用户借书的情况 我设计了三个表 bo
  • 带有客户端 haml 的 angularjs

    我刚刚开始在 Rails 应用程序中使用 AngularJS 并且由于我习惯在 Rails 中使用 haml 模板 所以我想在客户端对 AngularJS 执行相同的操作 问题是我不知道在 haml 文件中读取哪里 我有一个供投资者使用的模
  • CoreMotion 姿态参考系

    有什么区别startDeviceMotionUpdatesUsingReferenceFrameCM态度参考框架 X任意Z垂直 X任意校正Z垂直 X磁北Z垂直 X真北Z垂直 Here is 苹果文档 https developer appl
  • C#从MYSQL读取Mediumblob数据类型

    我在 MYSQL Server 中有一个数据库 有一个表存储图像及其信息 该图像的数据类型是 Mediumblob 我需要读取它并存储在 byte 中 但我不知道该怎么做 有人对这种情况有解决方案吗 非常感谢 Regards 查看来自的示例
  • 在 JPanel 内绘制 JComponent

    我正在尝试在 JPanel 内显示 JComponent 我使用空布局 因为组件的位置可以在运行时更改 并且我必须控制它们 但下面的代码不起作用 如果我显式调用 paintComponent 方法 JComponent 仅在显示时变得可见
  • 如何快速从列表中删除项目

    我正在寻找一种快速从 C 中删除项目的方法List
  • 如何在本地查看git中项目的Github网络视图?

    我觉得有点荒谬 我必须将分支推送到 Github 才能查看我可以使用的内容 有没有办法在 git 本地获得用户友好的视图 The git log branches remotes tags graph oneline decorate并不真
  • Tibco EMS 协议

    我正在尝试使用 Node js 与 Tibco EMS 服务器进行交互 并且很好奇是否可以仅在 Node js 中使用完全开源的解决方案 我不想使用 Tibco 的 Web Messaging 解决方案 那么这让我们想到 Tibco EMS
  • 为什么 C# 中的类没有循环布局问题?

    public struct Unit Unit u Causes Unit 类型的结构成员 Unit u 导致结构中发生循环 布局 But public class Unit Unit u 编译 我明白我想的问题 引用a时会形成死循环Uni
  • 完整功能中如何获取jQuery ajax数据?

    我知道这是众所周知的主题 解决方案之一是将调用更改为同步 我仍然不清楚是否有其他方法可以异步执行并获取完整函数中的数据 示例函数在 success 函数中创建一个新的资产对象 我想在完整函数中获取对它的引用 function getPres
  • javax.el.PropretyNotWritableException:类 Article 没有可写属性“id”

    我有一篇文章 DTO Article java 代码摘录 public class Article private int id public Article this id 0 public Integer getId return id