【问题标题】:referencing method in backing bean from xtml page来自 xhtml 页面的支持 bean 中的引用方法
【发布时间】:2013-07-11 23:10:40
【问题描述】:

当我在 xhtml 页面上键入类似的内容时:

<h:inputText id="name" value="#{user.name}" validator="#{user.validateName}">
    <f:ajax event="keyup" render="errorName"/>
</h:inputText>

当我按下 ctrl+space 时,对于验证器属性,eclipse 给我下拉菜单,其中包含支持的 bean 方法的名称。像那样: 带有红色圆圈的 user.validateName() 和不带括号的 user.validateName 以绿色圆圈开头。第一个我的验证器不工作,第二个它可以工作。 这两条线的manning是什么意思,红色圆圈或绿色圆圈是什么意思,&lt;class&lt;&gt;something这样的符号是什么意思?

【问题讨论】:

    标签: eclipse jsf-2 autocomplete


    【解决方案1】:

    一般来说红色是private会员 绿色是public

    如果是 jsf 页面编辑器。

    • 绿色的&lt; 符号表示该属性为只读属性,即没有为该属性提供setter 方法
    • 绿色&lt; 和红色&gt; 符号表示该属性都是可读写的。
    • 红色&gt; 表示属性是只写属性。
    • 绿色的&lt; class 将返回你的managedBean 的实际Class

    假设你有一个类如下

    public class LoginBean {
    
        private String username = "username";
        private String password = "password";
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        /*public void setPassword(String password) {
            this.password = password;
        }*/
    
    
    }
    

    然后

    • password 将有绿色 &lt; 因为 setter 方法不存在,所以它是只读的
    • username 将有绿色&lt; 和红色&gt;,因为它是由 setter getter 方法读取/写入的

    【讨论】:

    • 下一个问题是validator="#{user.validateName}
    • 您想了解关于验证器的哪些信息?
    • 对于验证器属性,当我按下 ctrl+space 时,eclipse 给我一个带有支持 bean 方法名称的下拉菜单。像这样:user.validateName() 带有红色圆圈的行和 user.validateName 没有括号以绿色圆圈开头。第一个我的验证器不工作,第二个它工作
    • 如果它是一个红色圆圈,那么它是私有的,这就是它在您的 xhtml 页面中不起作用的原因。为了访问 jsf 页面中托管 bean 的成员变量,它们需要是公共的。我希望这能消除您的疑虑。
    • 不,它是相同的公共方法,最后用红色字符书写相同方法的名称结束括号,并且没有颜色书写相同方法的名称,没有结束括号(使用此选项一切正常)。对于第二选择,我读到的是签名!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多