- 環境
- Windows10 64bit バージョン1909
- openjdk 11 2018-09-25
- Eclipse IDE for Enterprise Java Developers Version: 2020-03 (4.15.0)
- JSF 2.3.9
事象 : metaタグでviewportを指定したらエラーになった
2020-08-19 11:02:09:810 X-TrackingId:6ac183f5-3ea5-41d4-993b-231267d1 ERROR ExceptionHandler.handle:63 Error Parsing /ponsuke/sampleEdit.xhtml: Error Traced[line: 28] 要素タイプ"meta"は、対応する終了タグ"</meta>"で終了する必要があります。
javax.faces.view.facelets.FaceletException: Error Parsing /ponsuke/sampleEdit.xhtml: Error Traced[line: 28] 要素タイプ"meta"は、対応する終了タグ"</meta>"で終了する必要があります。
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:445)
at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:428)
at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:88)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:455)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:65)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:166)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:163)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:76)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:69)
at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:76)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:91)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:124)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:39)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:268)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:198)
at com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:122)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:223)
...省略...
sampleEdit.xhtml
<h:head>
<!--省略-->
<meta name="viewport" content="width=device-width, initial-scale=1">
</h:head>
原因 : タグを閉じていないから
タグの省略
空要素であるため開始タグは必須であり、終了タグは置いてはいけません。
<meta>: 文書レベルメタデータ要素 - HTML: HyperText Markup Language | MDN
え・・・・metaタグって終了タグ必要なの?
終了タグ
なし(XHTMLの場合は/を最後につける)
metaタグとは|コーディングのプロが作るHTMLタグ辞典
おぉぉ、XHTMLファイルを使っているから空要素には終了 />
が必要だった!
C.2 空要素
たとえば <br /> や <hr />, <img src="karen.jpg" alt="Karen" /> といったように、空要素の末尾の / と > との前にスペースを1個組み込むこと。また、たとえば
といったように、空要素には最小化タグ文法を使うこと。これは、XMLで許容されている代わりの文法
は、多くの既存のユーザエージェントでは与えられる結果が一定しないからである。
XHTML 1.0: 拡張可能ハイパーテキストマークアップ言語
対応 : XHTMLでは空要素であるmetaタグの最後に/をつける
sampleEdit.xhtml
<h:head>
<!--省略-->
<meta name="viewport" content="width=device-width, initial-scale=1" />
</h:head>