2009-06-17 16 views
3

私は順序付けされていないリストのナビゲーションを持っています。これをJSFコードに変換したかったのです。JSFへのHTMLの変換

<ul id="navbar"> 
<li id="articles"><a href="Link1">Articles</a></li> 
<li id="topics"><a href="Link2" title="Topics">Topics</a></li> 
.... 
</ul> 

..so私は何をすべき: は実際には、ここで

が生-HTMLナビゲーション..です何のJSFタグはありませんか?

答えて

4

アドホックテンプレートを実行する1つの方法は、JSPの代わりにFaceletsを使用することです。これらはJSF 2.0(JEE6の予定)の一部となっているので、それらを考慮する良い時期だと思います。セッション・スコープで定義された

public class UlBean implements Serializable { 

    private static final long serialVersionUID = 1L; 

    private final List<LiBean> listItems = new ArrayList<LiBean>(); 

    public UlBean() { 
    String[] links = { "http://www.sun.com", "Sun", 
     "http://www.oracle.com", "Oracle", 
     "http://www.ibm.com", "IBM", 
     "http://stackoverflow.com", 
     "<stackoverflow.com> & encoded output" }; 
    for (int i = 0; i < links.length; i++) { 
     LiBean item = new LiBean(); 
     item.setHref(links[i]); 
     item.setTitle(links[++i]); 
     listItems.add(item); 
    } 
    } 

    public List<LiBean> getListItems() { 
    return listItems; 
    } 

} 
...:

豆については、例えば

public class LiBean implements Serializable { 

    private static final long serialVersionUID = 1L; 

    private String href; 
    private String title; 

    public String getHref() { return href; } 

    public void setHref(String href) { this.href = href; } 

    public String getTitle() { return title; } 

    public void setTitle(String title) { this.title = title; } 

} 

...と

<managed-bean> 
    <managed-bean-name>ulBean</managed-bean-name> 
    <managed-bean-class>beans.UlBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    </managed-bean> 

...とすることができますこのFaceletページで使用されています:

<?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:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>repeat</title> 
</head> 
<body> 
<ul> 
    <ui:repeat value="#{ulBean.listItems}" var="item"> 
    <li><a href="#{item.href}"><h:outputText 
     value="#{item.title}" /></a></li> 
    </ui:repeat> 
</ul> 
</body> 
</html> 

...この出力を生成するために:あなたはJSPのに固執している場合

<?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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>repeat</title> 
</head> 
<body> 
<ul> 
    <li><a href="http://www.sun.com">Sun</a></li> 
    <li><a href="http://www.oracle.com">Oracle</a></li> 
    <li><a href="http://www.ibm.com">IBM</a></li> 
    <li><a href="http://stackoverflow.com">&lt;stackoverflow.com&gt; &amp; encoded output</a></li> 
</ul> 
</body> 
</html> 

を、あなたがこれを行うようになるコア実装では何も(唯一の繰り返し制御があるがありませんdataTable)。 3rd party component librariesのいずれかに何かが見つかります。

+1

JSFコンポーネントと標準HTMLを混在させてもFaceletsに問題はありません(f:verbatimの必要はありません)。必要に応じて、そのままリスト項目を追加することができます。 – Damo

+1

さて、あなたはそれに注意する必要があります。 JSFには、Ajax呼び出しに関してHTMLタグとJSFタグを混在させるときに問題があります。私たちはこれまでに多くの問題を経験してきました。 –

関連する問題