【问题标题】:a slippery JSF syntax error一个狡猾的 JSF 语法错误
【发布时间】:2013-08-07 21:38:58
【问题描述】:

如果我尝试在 Tomcat 7.0.34 上显示 JSF 2 页面:

  • jsf-api/impl 2.1.7
  • el-api 2.5
  • jstl 1.2

喜欢这个:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:fn="http://java.sun.com/jsp/jstl/functions"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui"
  xmlns:cis="http://java.sun.com/jsf/composite/comp">

<h:head>
  <title>Prova errore di sintassi</title>
</h:head>
<h:body>
  <f:view>
    <ui:include src="/WEB-INF/include/menubar.xhtml" />
    <h:form>
      <p:ajaxStatus style="width: 32px;height: 32px;" />
      <p:growl />
      <p:panel id="pannello">
    <p:focus />
    <p:messages
      showDetail="true"
      globalOnly="true" />
    <h:panelGrid columns="3">
      <p:outputLabel
        for="ckpensionat2"
        value="Pens2"
        title="tit x pens2"
        style="padding-right: 3px;  display: inline-block; min-width: 60px;" />
      <p:selectBooleanCheckbox
        id="ckpensionat2"
        value="#{miocomp.pensionato}"
        title="tit x pens2"
        valueChangeListener="#{miocomp.pensCambiato}" />
      </p:selectBooleanCheckbox>
      <h:outputLabel  value="pippo" />
      </h:outputLabel>
      <p:message for="ckpensionat2" />
      <p:commandButton
        value="agg"
        update="pannello" />
    </h:panelGrid>
      </p:panel>
    </h:form>
  </f:view>
</h:body>
</html>

什么都没有显示! 请注意双结束标签的错误

 .../>
 </p:selectBooleanCheckbox>
 <h:outputLabel  value="pippo" />
 </h:outputLabel>

我的问题是:

  1. 为什么 &lt;/h:outputLabel&gt; 会像 Eclipse 上的语法错误一样被清除,而 &lt;/p:selectBooleanCheckbox&gt; 却没有
  2. 当我尝试显示此页面时,我得到一个空白页面。如果我删除错误一切正常。
  3. 我的日志视图中也没有出现任何错误,tomcat 7 日志目录也没有

提前感谢您的任何建议

【问题讨论】:

  • 感谢 BalusC(顺便说一句,对您的工作表示赞赏!)指向 eclipse 标签。这更像是一个日食问题,但它仍然是在运行时没有人抱怨这个错误的事实。没有错误日志,只有一个空白页,我觉得这样的错误很难检测到。

标签: eclipse jsf-2


【解决方案1】:
  1. 这是一个语法错误(无效的 XML),因为在 <h:outputLabel value="pippo" /> </h:outputLabel> 中您关闭了两次标签;一次使用 /&gt; 结束标签,第二次使用 &lt;/h:outputLabel&gt; 元素。此外,p:selectBooleanCheckbox 没有 title 属性。由于这些错误,我很确定 IDE 无法验证文档的其余部分,所以它只会抱怨第一个错误。
  2. 这很正常...
  3. 我认为您应该提高日志级别或将应用程序的 web.xml 中的 javax.faces.PROJECT_STAGE 参数更改为 Development

【讨论】:

  • 请注意,在 Netbeans 中,XML 验证器仅抱怨 p:selectBooleanCheckbox 无效 title 属性。当我更正这个错误时,其余的都会显示出来。
  • 我只想指出,这些错误是我们想要的,它们是为了表现出不恰当的行为。主要是这些错误无法诊断。
猜你喜欢
  • 2015-03-12
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多