将托管bean属性打印为JavaScript变量

时间:2015-04-17 08:38:20

标签: javascript jsf

我试图将java字符串返回值打印到脚本java中。 这是我在java类中的方法

public static String getchamps (){ //Bdconnection class
    String str;
    {
        str = "date" ;
    }

    return str ;
}

问题是如何才能拥有此代码

<script type="text/javascript" >
    "date"
</script>

2 个答案:

答案 0 :(得分:3)

在这种情况下,您应该将JSF视为HTML代码生成器。您可以使用JSF标记/组件和EL表达式来生成所需的HTML输出。由于JavaScript在技术上是客户端语言的一部分(不是JSF!),你可以对JavaScript做同样的事情。

一旦你修复了这个糟糕的静态方法,就真正符合下面的Javabeans规范:

public String getChamps() {
    return "date";
}

然后你可以让JSF打印它,好像它是一个JS变量,如下所示:

<script>
    var champs = "#{bean.champs}";
</script>

要验证结果,只需在webbrowser中打开JSF页面并右键单击查看源。你应该看到类似的东西:

<script>
    var champs = "date";
</script>

请注意字符串中的JS特殊字符!如果字符串包含例如,则这将失败双引号甚至换行符。如果是这种情况,那么你最好使用EL函数来逃避它,如答案所示:Escape JavaScript in Expression Language

答案 1 :(得分:-2)

这样做:

<h:inputText id="propertyId" value="#{Bdconnection.str}" />

并在脚本中访问

document.getElementById('propertyId').val();