将JSF1.2迁移到JSF2<;c:设置>;值为null或空的变量集

将JSF1.2迁移到JSF2<;c:设置>;值为null或空的变量集,jsf,jsf-2,jstl,Jsf,Jsf 2,Jstl,我得到一份工作 10:55:06,770 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/Lisa].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception: javax.faces.view.facelets.TagException: //somewhere/mytag.xhtml @22,37 &l

我得到一份工作

10:55:06,770 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/Lisa].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception: javax.faces.view.facelets.TagException: //somewhere/mytag.xhtml @22,37 <c:set> var set with null or empty value
at com.sun.faces.facelets.tag.jstl.core.SetHandler.apply(SetHandler.java:118) [:2.0.3-]
at com.sun.faces.facelets.tag.jstl.core.IfHandler.apply(IfHandler.java:93) [:2.0.3-]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94) [:2.0.3-]
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:162) [:2.0.3-]
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:89) [:2.0.3-]
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:79) [:2.0.3-]
Servlet Faces Servlet的
10:55:06770错误[org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[Lisa].[Faces Servlet].[Faces Servlet]]Servlet.service()引发异常:javax.Faces.view.facelets.TagException://某处/mytag.xhtml@22,37带有null或空值的变量集
在com.sun.faces.facelets.tag.jstl.core.SetHandler.apply(SetHandler.java:118)[:2.0.3-]
在com.sun.faces.facelets.tag.jstl.core.IfHandler.apply(IfHandler.java:93)[:2.0.3-]
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)[:2.0.3-]
在com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:162)[:2.0.3-]
在com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:89)[:2.0.3-]
在com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:79)[:2.0.3-]
理想的解决方法是什么?我试图避免使用jstl函数,但c:set似乎是不可避免的

在我基本上使用的标签中

    <c:set var="longLabel" value="#{labelBundle[longLabelKey]}" />
<c:if test="#{hv:startsWith(longLabel, '???')}">
    <c:set var="longLabel" value="" />
</c:if>

这是一个普遍的问题:假设我有
其中bean.value可以为null或空字符串。现在怎么办


关于将ui:param替换为c:set,我将试用这一个

你能使用EL 2.2吗?您可以使用类似于
#{labels.getLabel(longLabelKey)}
的东西,其中labels.getLabel包含所需的逻辑,包括默认值。而不是使用
c:set
/
c:if
,这在这里并不推荐

否则,我将在自己的命名空间中使用已定义的静态函数,执行与建议的labels.getLabel相同的操作