jsf

yejsj 2006-01-16 04:48:55
我看了jsf生成的html,都 是<td><tr>1</tr></td><td><tr>2</tr></td>...可是我都没有找到他在哪里写了这些<td>和<tr>,我的QQ是393430575
有没有人知道有没有jsf的群
我想问一些关于tag的问题
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yejsj 2006-02-07
  • 打赏
  • 举报
回复
我想获得到HtmlTableRendererBase中得到的数据,那要怎么得到呢
yejsj 2006-02-07
  • 打赏
  • 举报
回复
我自己顶一下
humanity 2006-01-24
  • 打赏
  • 举报
回复
JSF encode HTML 可以在3个地方做:

Tag,

如果 tag.getComponentType() 有值 会用这个值到 faces-config.xml 等配置文件中找对应的 Component , 然后用它的 component.encodeBegin,

再或者 tag.getRenderType() 有值,也到 faces-config.xml 等配置文件中找对应的 renderKit
用它来 encodeBegin ,

用 component 的好处是可以动态计算,因为生命周期开始后就可以用 Component, 但是 Tag 是在 renderResponse 阶段,有些功能不能实现。


用 renderKit 继承了 component 的优点,同时可以挂接,比如 不同的浏览器或是 WAP 等不同客户端 提供不同的 RenderKit.


比如我的 <h:div>
TagClass 中 :
public class DivTag extends ... {
public String getComponentType(){
return "javax.faces.div";
}
}

faces-config.xml:
<component-type>javax.faces.div</xxx>
<component-class>xxx</...>

Component Java :

Div :
public void encodeBegin(FacesContext ctx){
if(isRendered){
ResponseWriter out = ctx.getResponseWriter();

out.startElement("div",this);

out.writeAttribute(xxxx,xxx,xxx );
}
}

public void encodeEnd(FacesContext ctx){
if(isRendered){
ResponseWriter out = ctx.getResponseWriter();
out.endElement("div");
}
}



yejsj 2006-01-24
  • 打赏
  • 举报
回复
我在HtmlTableRendererBase中从encodeBegin看起,看到RendererUtils.renderChild(facesContext, component);这一句


在RendererUtils中,我找到renderChild,它调用了child.encodeBegin(facesContext);
在UIComponentBase中,我又找到encodeBegin方法,它居然又跑到 renderer.encodeBegin(context, this);,这简直是一个循环,这中间是怎么回事?????
yejsj 2006-01-19
  • 打赏
  • 举报
回复
我建了一个jsf的群,群号是20115298
加进来,探讨一下吧
yangq4000 2006-01-18
  • 打赏
  • 举报
回复
<f:ob..>
yejsj 2006-01-18
  • 打赏
  • 举报
回复
我自己顶一下

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧