【问题标题】:multiple values in inputText? (JSF)inputText中有多个值? (JSF)
【发布时间】:2013-02-23 09:47:08
【问题描述】:

有没有办法将 inputText 的返回值与多个属性相关联?

像这样(这是一个示例,value1和value2标签属性在语法中不存在):

<h:inputText id="matricula" 
             value1="#{alunoController.aluno.matricula}" 
             value2="#{alunoHasCursoController.alunoHasCurso.matricula}">
</h:inputText>

提前致谢!

【问题讨论】:

  • value 是框架中的预定义属性。您无法将自己的属性定义为value1,value2...,您是否尝试在页面中保留此格式并进行检查?
  • 这是代码异味。我不相信这种能力存在并且有充分的理由。这是草率的设计。

标签: java jsf


【解决方案1】:

也许只是将 inputText 值直接传递给 bean 方法 (described here),在此方法中您可以将其关联到多个变量/字段。

【讨论】:

  • 我将深入解释我的问题> 我有两个模型:Student 和 Student_has_Course 两个模型都有属性注册。我需要让两个模型都具有这个由 inputText 接收到的具有相同值的属性注册集。或者有一种方法可以在一个模型内部访问另一个模型来捕获值而不重新实例化它?
  • @JohannGomes,请在实际问题中说明具体问题
【解决方案2】:

使用f:valueChangeListener 将更改发送到第二个bean。

【讨论】:

    【解决方案3】:
    <h:inputText
        value1="#{alunoController.aluno.matricula}" 
        value2="#{alunoHasCursoController.alunoHasCurso.matricula}">
    

    为什么需要副本?这是一个糟糕的设计。 Java 是面向对象的,允许您通过多个引用来引用单个对象实例。

    您只需要确保#{alunoHasCursoController.alunoHasCurso} 引用完全相同的#{alunoController.aluno} 实例。

    例如

    public class AlunoHasCursoController {
    
        @ManagedProperty("#{alunoController.aluno}")
        private Aluno alunoHasCurso;
    
        // ...
    }
    

    这样你就可以逍遥法外了

    <h:inputText
        value="#{alunoController.aluno.matricula}">
    

    或者反过来,取决于上下文和功能要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2014-02-12
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      相关资源
      最近更新 更多