2

いくつかのインクルードを含む新しい Facelets を作成したこの例外の理由は何だろうか。EL解像度内には明らかに再帰があります。メソッドのデバッグでは、VariableMapperWrapper.resolveVariable特別なことは何も表示されません: EL 解決が行われています ...

14.03.2013 17:20:13 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet Faces Servlet threw exception
java.lang.StackOverflowError
        at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
        at java.lang.StringBuilder.append(StringBuilder.java:119)
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:96)
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:89)
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:89)
             ... (recursion) ...
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:89)
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:89)
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:89)
        at org.apache.myfaces.view.facelets.el.VariableMapperWrapper.resolveVariable(VariableMapperWrapper.java:89)
        at com.sun.el.lang.VariableMapperFactory.resolveVariable(VariableMapperFactory.java:63)
        at com.sun.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:234)
        at com.sun.el.parser.SimpleNode.accept(SimpleNode.java:172)
        at com.sun.el.parser.SimpleNode.accept(SimpleNode.java:175)
        at com.sun.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:186)
        at com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:197)
        at com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:240)
        at com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:98)
        at org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:486)
        at org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule$DynamicValueExpressionMetadata.applyMetadata(ValueHolderRule.java:99)
        at org.apache.myfaces.view.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:45)
        at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:66)
        at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:93)
        at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:237)
        at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
        at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
        ...
4

1 に答える 1

3

Facelets XHTML コード内に特別なタイプの再帰があることがついに明らかになりました。a.xhtml includes b.xhtml includes a.xhtml のようなスニペットチェーンを含めることで、他の人がそのような再帰を作成したことに気付きました

私の場合、含まれているスニペットには、メインの XHTML ページ、スニペット ヘッダー セクションからのコピー & ペースト エラーが含まれていました。

<?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:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="xyz.xhtml">
...

-->template="xyz.xhtml"上記のスニペットを含む --> 再帰。

とにかく間違ったテンプレート属性を削除すると、問題が解決しました。最後に、この問題の症状としての上記の例外は、エラーの理由から少し離れていました。解決策はまったく明白ではありませんでした。

于 2013-03-15T14:53:33.437 に答える