JQuery オートコンプリート コードは正しいようですが、機能しません。
コードは十分に単純で、IE8 の「開発者ツール」や FireFox の「firebug」ツールを使用しても、JavaScript エラーは見られませんでした...
しかし、入力フィールドに文字 (「a」など) を入力しても、リストボックスから何も「ドロップダウン」しません...
何かおかしいところがあれば教えてください。この時点で、私は明らかに「木を見て森を見ている」わけではありません。
これは、JSF「複合コンポーネント」の定義からの抜粋です...
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="idpref" required="true"/>
<cc:attribute name="items" required="true"/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<!-- here is the input field -->
<h:inputText type="text" id="#{cc.attrs.idpref}"/>
<!-- here is the javascript -->
<h:outputScript library="js" name="jquery-1.7.2.js" />
<h:outputScript library="js" name="jquery-ui-1.8.21.custom.js" />
<script type="text/javascript" >
var jq = jQuery.noConflict();
jq(document).ready(function()
{
jq(function()
{
var list = #{cc.attrs.items};
var id = "#{cc.attrs.idpref}";
var prependedid = jq('input[id$="' + id + '"]').attr("id");
var comboid = "#" + prependedid;
jq(comboid).autocomplete({
source: list
});
});
});
</script>
</cc:implementation>
これは、上記の複合コンポーネントが使用されているページのビュー タグ コンテンツのスニペットです...
<!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:util="http://java.sun.com/jsf/composite/util"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<f:view contentType="text/html">
<h:head>
<title>testx</title>
<meta charset="utf-8" />
</h:head>
<h:body prependid="false">
<h:form id="form1" prependId="false">
<util:autoComplete prependId="false"
idpref="aaa"
items="#{refDataController.data}" />
</h:form>
</h:body>
</f:view>
</html>
これがバックエンドのJavaスニペットです...
package aaa.bbb.ccc.war;
import java.util.Arrays;
import java.util.List;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component("refDataController")
@Scope("request")
public class RefDataController
{
public RefDataController()
{
}
private List data = Arrays.asList ("\"Aman\"", "\"Albela\"", "\"Ali\"", "\"Ankit\"", "\"Azam\"", "\"Aryan\"");
public List getData()
{
return data;
}
}
ご協力ありがとうございます。
SD