Convert HTML to JSF

I have an unordered list navigation, and I wanted to convert it to JSF code. In fact, there is no JSF tag.

Here is the crude HTML navigation:

<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 what should I do?

+3
source share
1 answer

One way to do ad-hoc templating is to use Facelets instead of JSPs. Since they became part of JSF 2.0 (due to JEE6), I think this is the right time to consider them.

For example, for beans:

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

}

... and:

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

}

... defined in the session area:

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

... can be used on this Facelet page:

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

... to output this result:

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

JSP, , ( dataTable). - .

+4

Source: https://habr.com/ru/post/1710668/


All Articles