【问题标题】:Xpages - inPlaceForms bind to separate java beansXpages - inPlaceForms 绑定到单独的 java bean
【发布时间】:2021-12-24 17:23:59
【问题描述】:

我喜欢将托管 Java bean 与 xpages 一起使用,但仍有一种情况我无法解决。 我有一个应用程序,它显示数据库的一些条目并允许使用就地表单对其进行编辑。

每个表单都绑定到后端文档。我还想使用一个能够将字段绑定到 bean 中的值的 java bean。 我知道,我可以用列表和哈希图做一些事情,但那不一样。或者是否有可能处理一个类中的对象列表? 有人有想法,如何处理?

【问题讨论】:

    标签: java xpages lotus-domino ibm-domino


    【解决方案1】:

    首先创建一个简单的Person.java POJO。像这样的:

    public Person {
        String firstName;
       
        public getFirstName() {
          return firstName;
        }
    
        public setFirstName(String to) {
          this.firstName = to;
        }
    
        //etcetera...
    }  
    

    确保您要编辑的每个属性都有一个 getter 和 setter。

    您现在有 2 个选项:

    • 人员列表是List<Person>,当您编辑一个时,您可以直接从该列表中编辑对象。
    • 当用户想要编辑条目时,您将(例如)文档的注释 ID 从列表传递到就地表单,获取文档,构造一个 Person 对象并将其用作形式。

    假设Person 的实例名为person,您可以将它们绑定到如下输入:

    <xp:inputText value="#{person.firstName} />

    对于就地表单中的保存操作,我将创建一个单独的 PersonRepo 类,该类具有一个静态保存函数,该函数使用当前的 Person 对象并将其保存到数据库中:

    public class PersonRepo {
    
      public static void savePerson( Person person ) {
        Database db = ExtLibUtil.getCurrentDatabase();
        Document doc = db.createDocument();
        doc.replaceItemValue("firstName" , firstName);
        doc.save();        
      }
    
    }
    

    然后您可以从保存按钮调用它:

    PersonRepo.savePerson(person);

    【讨论】:

    • 我会添加类似检查人员对象是否已经关联到 NotesDocument 并获取它而不是通过 db.getDocumentByUNID(person.unid) 创建一个新对象...但我假设这个应该很清楚,你的代码只是一个例子......
    • 哦,看起来很简单。我可以使用我制作的每个 java 类吗?我是否必须在 faces-config.xml 中创建一个条目作为该类的托管 bean?
    • 是的,您可以从您创建的其他类中调用代码。如果您使用托管 bean,则只需将条目添加到 faces-config 文件,但在我的示例中,我没有使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2016-09-25
    相关资源
    最近更新 更多