java - 为什么这次调用中的服务为空?

标签 java jsf

我在 bean 上有这个方法:

public boolean isLinkInDescriptionForCheckbox(final Service service) {
    logger.info("Testing if there is a link for {}", service);
    return Service.UK_ADDRESS_CORRECTION == service;
}

...这在我的 JSP 中:

<c:if test="#{serviceUiDescriptions.isLinkInDescriptionForCheckbox(service)}">

我的日志告诉我这一点:

c.n.c.s.c.ServiceUiDescriptions - Testing if there is a link for null

但是这工作正常:

<label for="checkbox_#{service.name()}"> #{serviceUiDescriptions.getDescriptionForCheckbox(service)}</label>

...这是 c:if 标记之前的行

所以:在之前的行中,service 不为 null,但在 c:if 行的测试中 service 为 null。

这是整个片段

<ui:repeat var="service" value="#{servicesBean.getAvailableServicesOfGroup(servicePresentationGroup)}">
    <div class="servicePresentation" title="#{serviceUiDescriptions.getLongDescription(service)}">
        <span class="checkboxSpan"> 
            <input type="checkbox” name="checkbox_#{service.name()}" value="true" checked="checked"
                                    id="checkbox_#{service.name()}" />
        </span>
            <h2>
                <label for="checkbox_#{service.name()}"> #{serviceUiDescriptions.getDescriptionForCheckbox(service)}</label>
                <c:if test="#{serviceUiDescriptions.isLinkInDescriptionForCheckbox(service)}">
                    <span class="smallText">
                        <h:outputLink value="#{serviceUiDescriptions.getLinkInDescriptionForCheckbox(service)}" >
                        #{serviceUiDescriptions.getLinkDescriptionInDescriptionForCheckbox(service)}
                        </h:outputLink>
                    </span>
                </c:if>
            </h2>
        </div>
</ui:repeat>

这就是我得到的 - 看没有链接:

look no link

最佳答案

两条语句可能一行接一行,但不会同时执行。 <c:if>是一个 JSTL 标签,在 View 构建期间执行。另一个表达式将被包裹在 <h:outputText> 中。它将在 View 渲染期间执行。我猜该服务将在两者之间创建。

要解决您的问题,您可以替换 <c:if>

<ui:fragment rendered="#{serviceUiDescriptions.isLinkInDescriptionForCheckbox(service)}">

或替换 <span>带有

的元素
<h:panelGroup styleClass="smallText" rendered="#{serviceUiDescriptions.isLinkInDescriptionForCheckbox(service)}">

(没有 <c:if> )。

另请参阅:

关于java - 为什么这次调用中的服务为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526078/

相关文章:

java - 使用 Swing 在 JTextArea 中呈现实时数据

java - 验证错误: Value is required error for list selection event

java - 我的第一个反向 ajax 应用程序

jsf - 如何在JSF中隐藏元素?

java - ASM 中的哪些指令仅用于调试?

java - POI - 将新字体导入 POI

java - 我在 onAttach(Context) 中收到这个奇怪的错误

java - NetBeans 6.9 中的警告或信息框 : "x" is not a known variable in the current context

java - 在jsf中创建动态确认对话框

java - 浏览器不缓存资源( header 设置)