根据http://xmlns.jcp.org/jsf/html的标签库,a h:panelGroup是
适用于只能嵌套一个UIComponent子项的情况,例如facet.如果存在"style"或"styleClass"属性,并且"layout"属性的值为"block",则渲染"div"元素,输出"style"属性的值作为"style"属性和"styleClass"属性的值作为"class"属性的值.否则,如果"layout"属性不存在,或者"layout"属性包含"block"以外的值,则渲染"span"元素,输出"style"属性的值作为"style"的值"attribute"和"styleClass"属性的值作为"class"属性的值.
的情况下
<h:panelGroup id="id" layout="block">
<!-- ... --->
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
要么
<h:panelGroup layout="block" style="margin-right: 10px;">
<!-- ... --->
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
a div正在呈现:
<div id="id">
</div>
Run Code Online (Sandbox Code Playgroud)
各自
<div style="margin-right: 10px;">
</div>
Run Code Online (Sandbox Code Playgroud)
但省略时id(如果不想update的panelGroup)或者style(如果不想样式的panelGroup)没有div被渲染和生成的HTML可以搞砸那些布局.除了探索JSF的领域之外,panelGroup还可以使用a来有条件地使用其rendered标志来呈现子元素,但如前所述,当省略两个提到的属性时,结果是有条件地呈现但没有a div,例如
<h:panelGroup layout="block" rendered="true">
<it>Without DIV.</it>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
导致
<it>Without DIV.</it>
Run Code Online (Sandbox Code Playgroud)
在此查询之后,我想与Stackoverflow社区核实,我理解正确的是,当不使用a panelGroup作为命名容器或习惯样式时,使用a ui:fragment和布局部分更好地解决条件渲染部分(如果需要)用硬编码div.是这样吗?
我们有一个设置,我们将不同的可选视图参数传递给JSF页面,并在设置参数后处理后续视图操作.一个非常简单的例子如下所示:
page.xhtml:
<?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:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:view>
<f:metadata>
<f:viewParam name="a" value="#{page.a}"/>
<f:viewAction action="#{page.populateA()}" if="#{not empty page.a}"/>
<f:viewParam name="b" value="#{page.b}"/>
<f:viewAction action="#{page.populateB()}"/>
</f:metadata>
<h:outputLabel value="#{page.message}"/>
</f:view>
</html>
Run Code Online (Sandbox Code Playgroud)
页
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@ViewScoped
@Named
public class Page {
private String a;
private String b;
private String message;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
} …Run Code Online (Sandbox Code Playgroud) 我是Java中的OOP概念的新手.这两起事件有什么区别?
1.
ClassName obj_name = new ClassName();
obj_name.method();
Run Code Online (Sandbox Code Playgroud)
2.
new ClassName().method();
Run Code Online (Sandbox Code Playgroud)
非常感谢一个很好的解释.谢谢