Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拥有多个输入字段的JSF组件_Java_Jsf_Jsf 2_Facelets_Composite Component - Fatal编程技术网

Java 拥有多个输入字段的JSF组件

Java 拥有多个输入字段的JSF组件,java,jsf,jsf-2,facelets,composite-component,Java,Jsf,Jsf 2,Facelets,Composite Component,我遇到的问题要复杂得多,但我尝试将其分解为一个演示主要内容的最小示例 我的BeanClass正在管理一些实体/POJO,其中该POJO再次包含一些其他实体/POJO public class MyEntityA implements Serializable { String attributA; MyEntityB b; // Getter .. Setter } public class MyEntityB implements Serializable { St

我遇到的问题要复杂得多,但我尝试将其分解为一个演示主要内容的最小示例

我的BeanClass正在管理一些实体/POJO,其中该POJO再次包含一些其他实体/POJO

public class MyEntityA implements Serializable {
   String attributA;
   MyEntityB b;
   // Getter .. Setter
}

public class MyEntityB implements Serializable {
    String attributB
   // Getter .. Setter
}
在我的JSF中,我需要所有属性的输入字段,比如

<p:inputTextarea value="#{myBean.entityA.attributeA}" />
<p:inputText value="#{myBean.entityA.b.attributeB}" />

我真想写点类似的东西来代替这个

<my:custom property="#{myBean.entiyA}" />


使用自己的facelet标记文件时,我必须分配我想要更改的每个属性,因此我将获得的好处令人不满意,因为如果我的EntityClass更改,我必须触摸我的每个标记。这是我想避免的一点


使用复合组件我有一个问题,这是作为单个组件呈现的,但是如果我想在panelGrid中使用它,它会破坏我页面的整个设计


是否可以使用自定义组件和标记处理程序来实现这一点?还是他们的方法更简单?使用自定义组件和标记处理程序,我的简短示例的解决方案会是什么样子


最后,我必须以某种方式循环这些组件

 <c:forEach var="item" items="#{myBean.entityACollection}">
       <my:custom property="#{item}"/>
 </c:forEach>

应该和我写的一样

 <p:inputTextarea value="#{myBean.firstEntityA.attributeA}" />
 <p:inputText value="#{myBean.firstEntityA.b.attributeB}" />
 <p:inputTextarea value="#{myBean.secondEntityA.attributeA}" />
 <p:inputText value="#{myBean.secondEntityA.b.attributeB}" />
 <p:inputTextarea value="#{myBean.thirdEntityA.attributeA}" />
 <p:inputText value="#{myBean.thirdEntityA.b.attributeB}" />
 ...

...

如果您需要更多信息或在理解我的问题时遇到问题,请告知

我正在使用 PrimeFaces 4.0和
Mojarra 2.1.26

@ChristopherRoussy复合组件真的是这个问题的合适标签吗?因为正如我在问题中提到的,我无法用复合组件解决我的问题,但我认为我必须编写一个自己的自定义组件。这个标签将吸引可以帮助你的人,我认为从这个角度来看是合适的。