Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jstl中获取值_Java_Jsf_Jstl - Fatal编程技术网

Java 如何在jstl中获取值

Java 如何在jstl中获取值,java,jsf,jstl,Java,Jsf,Jstl,我已经用jstl编写了一段代码。我在执行html时遇到以下错误 我可以在c:set的value属性中调用一个方法吗?如果不能,请告诉我怎么做 例外情况: com.sun.facelets.tag.TagAttributeException: /role/MyPage.xhtml @33,82 value="#{roleManager.roleStatus(roleId)}" Error Parsing: #{roleManager.roleStatus(roleId)} 代码: 标准el解析器

我已经用jstl编写了一段代码。我在执行html时遇到以下错误

我可以在c:set的value属性中调用一个方法吗?如果不能,请告诉我怎么做

例外情况:

com.sun.facelets.tag.TagAttributeException: /role/MyPage.xhtml @33,82 value="#{roleManager.roleStatus(roleId)}" Error Parsing: #{roleManager.roleStatus(roleId)}
代码:


标准el解析器无法使用参数评估方法调用。 以下是一些解决方案:

在bean中使用temp属性:

<c:set target="${roleManager}" property="roleId" value="${roleId}"/>
<c:set var="roleIdValue" value="#{roleManager.roleStatus}" />
使用函数:

<c:set target="${roleManager}" property="roleId" value="${roleId}"/>
<c:set var="roleIdValue" value="#{roleManager.roleStatus}" />
第页:

${prefix:methodName(param1, param2, ...)}
您应该在taglib中声明函数:

<function>
<name>methodName</name>
<function-class>className</function-class>
<function-signature>
    returnType methodName(param1Type, param2Type, ...)
</function-signature>

调用的方法名
类名
returnType方法名(param1Type,param2Type,…)

作为参数,您可以使用roleManager本身和参数

使用允许方法调用的el解析器:

<c:set target="${roleManager}" property="roleId" value="${roleId}"/>
<c:set var="roleIdValue" value="#{roleManager.roleStatus}" />
例如使用JBoss el解析器, 或者,您也可以实施您自己的解决方案,如下所述: