私はすでに数時間これで頭を壁にぶつけていて、なぜこれが起こっているのか手がかりがありません...
最近、JBoss 4.2.3 から JBoss 6 Final への移行プロセスを開始しました。JSF 1.2 を使用しています。アプリケーションを新しい JBoss にうまく適応させ (主に WEB-INF/lib からいくつかの JAR を削除し、web.xml を少し調整することによって)、アプリはうまく起動します。
問題は、一部の EL 式が解決されていない一方で、他のものは解決されていることです。また、ログに 0 の例外または警告が表示されます。
JSF xml 構成ファイルの 1 つで定義されている「mapContext」という Bean があります。順調に作成中です。私のJSFページには次のものがあります:
<h:inputHidden id="mapContextId" value="#{mapContext.webContextId}" />
レンダリングされたページでは次のようになります。
<input id="mapForm:mapContextId" type="hidden" name="mapForm:mapContextId" value="#{mapContext.webContextId}" />
ご覧のとおり、JSF タグは問題なくレンダリングされますが、EL は解釈されません。
server.log に問題を示すログはありません。
JSF 1.2、JSTL 1.2、Jboss 6、JDK 6。
Web.xml:
<context-param>
<param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
<param-value>Mojarra-1.2</param-value>
</context-param>
どんな助けでも大歓迎です!
詳細:
コードと構成を再確認しました。また、JSF で使用されている Bean を確認するために、使用しているカスタム変数リゾルバーにログを追加しました。結果は奇妙です。
まず、JSF ページをさまざまな出力で拡張しました。現在は次のようになっています。
<h:inputHidden id="mapContextId1" value="#{mapContext}" />
<h:inputHidden id="mapContextId2" value="#{selectionPointSymbol.width}" />
<h:inputHidden id="mapContextId" value="#{mapContext.webContextId}" />
<h:inputHidden id="mapContextId3" value="#{selectionPointSymbol4.width}" />
次のようにレンダリングされます。
<input type="hidden" name="mapForm" value="mapForm" />
<input id="mapForm:mapContextId1" type="hidden" name="mapForm:mapContextId1" value="#{mapContext}" />
<input id="mapForm:mapContextId2" type="hidden" name="mapForm:mapContextId2" value="#{selectionPointSymbol.width}" />
<input id="mapForm:mapContextId" type="hidden" name="mapForm:mapContextId" value="#{mapContext.webContextId}" />
<input id="mapForm:mapContextId3" type="hidden" name="mapForm:mapContextId3" value="#{selectionPointSymbol4.width}" />
ログを確認したところ、非標準の JSF タグによって mapContext が適切に解決されていることがわかります。
12:27:24,911 ERROR [mb.ags.adf.resolvers.AGSUserResolver] AGSUserResolver asked to resolve: mapContext
12:27:24,911 ERROR [mb.ags.adf.resolvers.AGSUserResolver] AGSUserResolver delegated to: com.sun.faces.el.ChainAwareVariableResolver@ab4f3c and resulted with: mb.ags.adf.map.MbWebContext@20
12:27:24,927 ERROR [mb.ags.adf.resolvers.AGSUserResolver] AGSUserResolver asked to resolve: mapContext
12:27:24,927 ERROR [mb.ags.adf.resolvers.AGSUserResolver] AGSUserResolver delegated to: com.sun.faces.el.ChainAwareVariableResolver@ab4f3c and resulted with: mb.ags.adf.map.MbWebContext@20
(それらの多くはログにあります)。
ただし、標準タグでのみ使用される selectionPointSymbol または selectionPointSymbol4 (そのような Bean はまったく定義されていません!) に関する単一のログはありません。
サーバーログにまだエラーや警告はありません:(
詳細: 簡単なテスト。
JSF ページ:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page buffer="96kb" autoFlush="true" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<f:view>
<f:loadBundle basename="mb.ags.res.AGSClient" var="msg"/>
<html>
<head>
<title>*********</title>
<link rel="stylesheet" title="base" href="/gis/css/base-style.css" type="text/css" media="screen" />
<style type="text/css">
body { overflow:auto; }
</style>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<div id="loading_table_container" style="position:absolute; text-align:center; left:0; top:0; width:100%; height:100%; z-index:20000; background-color:white;">
<table id="loading" style="z-index:20001;" height="100%" width="100%">
<tr>
<td align="center" valign="middle" style="font-size: 12px">
<img src="/gis/images/loading_big.gif" alt="Loading..." align="absmiddle"/><br/><br/>
<h:outputText value="#{msg.welcome_page_map_client_loading}"/>
<h:outputText id="mapContextId2" value="#{selectionPointSymbol.width}" />
</td>
</tr>
</table>
</div>
<script>
var url = "<%= redirectUrl %>";
var refresh = "<meta http-equiv=\"refresh\" content=\"1000; URL=" + url + "\" />";
document.writeln(refresh);
</script>
</body>
</html>
</f:view>
次のようにレンダリングされます。
<html>
<head>
<title>GIS</title>
<link rel="stylesheet" title="base" href="/gis/css/base-style.css" type="text/css" media="screen" />
<style type="text/css">
body { overflow:auto; }
</style>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" language="javascript" src="/gis/js/prototype.js"></script>
<script type="text/javascript" language="javascript" src="/gis/js/scriptaculous/scriptaculous.js?load=effects"></script>
<script type="text/javascript" language="javascript" src="/gis/js/ext/ext-prototype-adapter.js"></script>
<script type="text/javascript" language="javascript" src="/gis/js/ext/ext-all.js"></script>
<script type="text/javascript" language="javascript" src="/gis/js/mb_errors.js"></script>
<script type="text/javascript" language="Javascript" src="/gis/js/esri_core.js"></script>
<script type="text/javascript" language="Javascript" src="/gis/js/mapviewer.js"></script>
<script type="text/javascript" language="javascript" src="/gis/js/ExternalClient.js"></script>
<script type="text/javascript" language="Javascript" src="/gis/js/index_init.js"></script>
</head>
<body>
<div id="loading_table_container" style="position:absolute; text-align:center; left:0; top:0; width:100%; height:100%; z-index:20000; background-color:white;">
<table id="loading" style="z-index:20001;" height="100%" width="100%">
<tr>
<td align="center" valign="middle" style="font-size: 12px">
<img src="/gis/images/loading_big.gif" alt="Loading..." align="absmiddle"/><br/><br/>
#{msg.welcome_page_map_client_loading}<span id="mapContextId2">#{selectionPointSymbol.width}</span>
</td>
</tr>
</table>
</div>
<script>
var url = "/gis/mapviewer.jsf?msid=1000005&uid=1&cid=1&mapContextId=1";
var refresh = "<meta http-equiv=\"refresh\" content=\"1000; URL=" + url + "\" />";
document.writeln(refresh);
</script>
</body>
</html>
問題を示すログがないため、何が起こっているのかまだわかりません。