2009-06-17 2 views
3

Я hava неупорядоченный список навигации, и я хотел преобразовать это в код JSF. На самом деле, нет JSF тег ..Преобразование HTML в 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 что я должен делать?

ответ

4

Один из способов сделать ad-hoc шаблоны - использовать Facelets вместо JSP. Поскольку они стали частью JSF 2.0 (из-за JEE6), я думаю, что самое подходящее время для их рассмотрения.

Например, для фасоли:

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; } 

} 

... и:

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; 
    } 

} 

... определены в сессии объем:

<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> 

... чтобы произвести этот вывод:

<?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> 

Если вы наклеивания с JSPs, нет ничего в реализации ядра, что позволит вам сделать это (только повторение управления является данныеTable). Вы можете найти что-то в одном из 3rd party component libraries.

+1

Возможно, стоит добавить, что Facelets не имеет проблем с смешиванием компонентов JSF и стандартного HTML (нет необходимости в f: verbatim). Вы можете просто добавить элементы списка, как они есть, если хотите. – Damo

+1

Ну, вы должны быть осторожны. У JSF возникают проблемы при смешивании тегов HTML с тегами JSF, когда речь идет о вызовах Ajax. В прошлом мы столкнулись с множеством проблем. –

Смежные вопросы