java - jsf动态变化managedbean

标签 java jsf jsf-2 managed-bean

如何动态更改“值”属性的托管 bean?例如,我有 h:inputText,根据输入的文本,托管 bean 必须是#{studentBean.login} 或#{lecturerBean.login}。简化形式:

<h:inputText id="loginField" value="#{'nameofbean'.login}" />

我试图嵌入另一个 el 表达式而不是“nameofbean”:

value="#{{userBean.specifyLogin()}.login}"

但是没有成功。

最佳答案

多态性应该在模型中完成,而不是在 View 中。

例如

<h:inputText value="#{person.login}" />

public interface Person {
    public void login();
}

public class Student implements Person {
    public void login() {
        // ...
    }
}

public class Lecturer implements Person {
    public void login() {
        // ...
    }
}

最后在托管 bean 中

private Person person;

public String login() {
    if (isStudent) person = new Student(); // Rather use factory.
    // ...
    if (isLecturer) person = new Lecturer(); // Rather use factory.
    // ...
    person.login();
    // ...
    return "home";
}

否则,每次添加/删除不同类型的Person 时都必须更改 View 。这是不对的。

关于java - jsf动态变化managedbean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026704/

相关文章:

java - jni4net 不兼容的类更改错误

java - 在 Java 中追加到数组

java - 从另一个类访问非静态变量

java - 根据从另一个数据表中选择记录的复选框来填充数据表

java - 无法弄清楚如何解决 javax.persistence.PersistenceException

jsf - 覆盖用户界面 :insert and ui:include-Handler

validation - 如何验证素数树 <p :tree>

java - java String 和 String Builder 问题

jsf - h :link and parameters JSF

jQuery-UI 与 RichFaces 4 集成