Jakarta Faces 4, Jakarta EE 10, Glassfish 7 - Пользовательский компонент не отображается должным образомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Jakarta Faces 4, Jakarta EE 10, Glassfish 7 - Пользовательский компонент не отображается должным образом

Сообщение Anonymous »

Попытка вступить в обучение Jakarta ee 10+, с Jakarta, сталкивается с 4+.
с простым примером создания пользовательского компонента (тега). печатаются, только из bean.java .
Я использую OpenJdk 23 (во время написания попытки OpenJdk 21 ), Glassfish 7.0.22 , Maven 3.9.9 и Netbeans 25 . Html код выглядит так, как на странице index.xhtml ничего не показано:



Data List Example












< /code>
Вот артефакты: < /p>
pom.xml


4.0.0

com.example
chapter-11-01
0.1-SNAPSHOT
war

chapter-11-01


UTF-8
UTF-8
21
10.0.0
3.13.0
3.4.0




jakarta.platform
jakarta.jakartaee-api
${jakartaee-api.version}
provided




chapter-11-01


org.apache.maven.plugins
maven-compiler-plugin
${compiler-plugin.version}


maven-war-plugin
${war-plugin.version}

false







/src/main/webapp/index.xhtml



Data List Example










/src/main/webapp/web-inf/web.xml



index.xhtml



faces
jakarta.faces.webapp.FacesServlet
1


faces
*.xhtml



/src/main/webapp/web-inf/beans.xml




/src/main/webapp/web-inf/faces-config.xml





jakarta.faces.Data
example.List
com.example.renderer.DataListRenderer




/src/main/webapp/web-inf/example.taglib.xml



example.tags
t

Renders a HTML list.
dataList

com.example.component.DataList




/src/main/java/com/example/bean/bean.java
package com.example.bean;

import jakarta.enterprise.context.SessionScoped;
import jakarta.inject.Named;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

@Named
@SessionScoped
public class Bean implements Serializable {

private List items;

public Bean() {
items = Arrays.asList("Item 1", "Item 2", "Item 3", "Item 4");
}

public List getItems() {
return items;
}
}

/src/main/java/com/example/component/datalist.java
package com.example.component;

import com.example.renderer.DataListRenderer;
import jakarta.faces.component.FacesComponent;
import jakarta.faces.component.UIData;

@FacesComponent
public class DataList extends UIData {
public DataList() {
setRendererType(DataListRenderer.RENDERER_TYPE);
System.out.println("DataList component initialized.");
}
}

/src/main/java/com/example/renderer/datalistererer.java
package com.example.renderer;

import jakarta.faces.component.UIComponent;
import jakarta.faces.component.UIData;
import jakarta.faces.context.FacesContext;
import jakarta.faces.context.ResponseWriter;
import jakarta.faces.render.FacesRenderer;
import jakarta.faces.render.Renderer;
import java.io.IOException;

@FacesRenderer(
componentFamily = UIData.COMPONENT_FAMILY,
rendererType = DataListRenderer.RENDERER_TYPE
)
public class DataListRenderer extends Renderer {

public static final String RENDERER_TYPE = "example.List";

@Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
ResponseWriter writer = context.getResponseWriter();
UIData data = (UIData) component;

System.out.println("encodeBegin() - Row count: " + data.getRowCount());

if (data.getRowCount() > 0) {
writer.startElement("ul", component);
}
}

@Override
public boolean getRendersChildren() {
return true;
}

@Override
public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
ResponseWriter writer = context.getResponseWriter();
UIData data = (UIData) component;

System.out.println("encodeChildren() called");

for (int i = 0; i < data.getRowCount(); i++) {
data.setRowIndex(i);
writer.startElement("li", component);
if (component.getChildCount() > 0) {
for (UIComponent child : component.getChildren()) {
child.encodeAll(context);
}
}
writer.endElement("li");
}
data.setRowIndex(-1);
}

@Override
public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
ResponseWriter writer = context.getResponseWriter();
UIData data = (UIData) component;

System.out.println("encodeEnd() - Row count: " + data.getRowCount());

if (data.getRowCount() > 0) {
writer.endElement("ul");
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... played-pro
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»