Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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/4/video/2.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
Jsf 2 JSF2.0:复合组件中的问题;从支持Bean初始化属性_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 JSF2.0:复合组件中的问题;从支持Bean初始化属性

Jsf 2 JSF2.0:复合组件中的问题;从支持Bean初始化属性,jsf-2,primefaces,Jsf 2,Primefaces,我正在开发一个Java Web应用程序,使用JSF2和Primefaces作为Web框架。我的应用程序旨在管理摄像头。所有关于摄像机的数据都存储在PostgreSQL数据库中我有一个JSF视图,其中使用传单的Javascript API显示动态地图。 您可以通过以下链接查看此类地图的示例: 总而言之,我的地图旨在显示摄像机的标记。标记的位置是使用摄影机的属性生成的 我已经创建了一个复合组件及其支持Bean来处理映射。以下是视图的源代码: // 下面是我的支持bean的代码: @FacesCo

我正在开发一个Java Web应用程序,使用JSF2和Primefaces作为Web框架。我的应用程序旨在管理摄像头。所有关于摄像机的数据都存储在PostgreSQL数据库中
我有一个JSF视图,其中使用传单的Javascript API显示动态地图。 您可以通过以下链接查看此类地图的示例:

总而言之,我的地图旨在显示摄像机的标记。标记的位置是使用摄影机的属性生成的
我已经创建了一个复合组件及其支持Bean来处理映射。以下是视图的源代码:


//
下面是我的支持bean的代码:

@FacesComponent(value=“mapponent”)
公共类MapComponent扩展了UINamingContainer{
私有静态最终字符串MAP\u ID\u PROP=“MAP\u ID”;
私有静态最终字符串OSM\u URL\u PROP=“OSM\u URL”;
私有静态最终字符串OSM_ATTRIB_PROP=“OSM_ATTRIB”;
私有静态最终字符串MIN\u ZOOM\u PROP=“MIN\u ZOOM”;
私有静态最终字符串MAX\u ZOOM\u PROP=“MAX\u ZOOM”;
私有静态最终字符串MAP\u X\u PROP=“MAP\u X”;
私有静态最终字符串MAP\u Y\u PROP=“MAP\u Y”;
私有静态最终字符串MAP\u DEFAULT\u ZOOM\u PROP=“MAP\u DEFAULT\u ZOOM”;
私有静态最终字符串MAP\u BASIC\u LAYER\u NAME\u PROP=“MAP\u BASIC\u LAYER\u NAME”;
私有静态最终字符串映射在单击时启用;
私有字符串mapId;
私人字符串osmUrl;
私人字符串osmAttrib;
私有整数最小缩放;
私有整数maxZoom;
私有双mapX;
私人双mapY;
私有整数映射;
私有字符串mapBasicLayerName;
私有布尔mapEnableOnClick;
/**
*Instanties联合国新地图组件。
*/
公共映射组件(){
超级();
mapId=(字符串)AppUtil.getProperty(MAP\u ID\u PROP);
osmUrl=(字符串)AppUtil.getProperty(OSM_URL_PROP);
osmAttrib=(字符串)AppUtil.getProperty(OSM_ATTRIB_PROP);
minZoom=Integer.parseInt((字符串)AppUtil.getProperty(MIN_ZOOM_PROP));
maxZoom=Integer.parseInt((字符串)AppUtil.getProperty(MAX_ZOOM_PROP));
mapX=Double.parseDouble((字符串)AppUtil.getProperty(MAP_X_PROP));
mapY=Double.parseDouble((字符串)AppUtil.getProperty(MAP_Y_PROP));
mapDefaultZoom=Integer.parseInt((字符串)AppUtil.getProperty(MAP_DEFAULT_ZOOM_PROP));
MapBasicClayerName=(字符串)AppUtil.getProperty(映射\基本\图层\名称\属性);
setMapEnableOnClick(Boolean.parseBoolean((String)AppUtil.getProperty(MAP_ENABLE_ON_CLICK_PROP));
}
/**
*Getter:retourne-le-map-id。
* 
*@return-le-map-id
*/
公共字符串getMapId(){
返回mapId;
}
/**
*Getter:retourne-le-osm-url。
* 
*@return-le-osm-url
*/
公共字符串getOsmUrl(){
返回奥斯穆尔;
}
/**
*获取者:重新发布osm属性。
* 
*@return le osm attrib
*/
公共字符串getOsmAttrib(){
返回osmAttrib;
}
/**
*Getter:重播乐敏zoom。
* 
*@returnleminzoom
*/
公共整数getMinZoom(){
返回最小缩放;
}
/**
*Getter:重播max zoom。
* 
*@return-le-max-zoom
*/
公共整数getMaxZoom(){
返回最大缩放;
}
/**
*获得者:重新获得地图x。
* 
*@return-le-map x
*/
公共双getMapX(){
返回mapX;
}
/**
*获得者:重演地图y。
* 
*@return-le-map-y
*/
公共双getMapY(){
返回mapY;
}
/**
*Getter:retourne le映射默认缩放。
* 
*@return-le地图默认缩放
*/
公共整数getMapDefaultZoom(){
返回默认缩放;
}
/**
*Getter:retourne le映射基本层名称。
* 
*@return le地图基本图层名
*/
公共字符串getMapBasicLayerName(){
返回mapBasicLayerName;
}
/**
*设置器:影响映射id。
* 
*@param-mapId-le-map-id
*/
公共void setMapId(字符串mapId){
this.mapId=mapId;
}
/**
*Setter:影响osm url。
* 
*@param osmUrl le osm url
*/
公共void setOsmUrl(字符串osmUrl){
this.osmUrl=osmUrl;
}
/**
*设定者:影响osm属性。
* 
*@param osmAttrib le osm attrib
*/
公共void setOsmAttrib(字符串osmAttrib){
this.osmAttrib=osmAttrib;
}
/**
*设定器:影响最小缩放。
* 
*@param minZoom le minZoom
*/
公共无效设置最小缩放(整数最小缩放){
this.minZoom=minZoom;
}
/**
*塞特:影响最大变焦。
* 
*@param maxZoom le max zoom
*/
public void setMaxZoom(整数maxZoom){
this.maxZoom=maxZoom;
}
/**
*设定者:影响地图x。
* 
*@param mapX le map x
*/
公共void setMapX(双mapX){
this.mapX=mapX;
}
/**
*二传手:影响地图y。
* 
*@param-mapY-le-mapY
*/
公共无效设置映射(双映射){
this.mapY=mapY;
}
/**
*Setter:影响贴图的默认缩放。
* 
*@param mapDefaultZoom le映射默认缩放
*/
public void setMapDefaultZoom(整数mapDefaultZoom){
this.mapDefaultZoom=mapDefaultZoom;
}
/**
*Setter:影响地图基本图层名称。
* 
*@param mapBasicLayerName le地图基本图层名称
*/
public void setMapBasicLayerName(字符串mapBasicLayerName){
this.mapBasicLayerName=mapBasicLayerName;
}
/**
*Getter:retourne-le-map-enable-on-click。
* 
*@return-le点击启用地图
*/
公共布尔getMapEnableOnClick(){
返回mapEnableOnClick;
}
/**
*Setter:单击即可启用影响映射。
* 
*@param MapEnable单击可启用映射
*/
public void setMapEnableOnClick(布尔mapEnableOnClick){
this.mapEnableOnClick=mapEnableOnClick;
}
}

为了管理我的组件,我还创建了一个支持bean。以下是xhtml源代码:


//         
打开弹出式点击功能(填充、横向、横向){
map.closePopup(clusterPopup);
if(map.getZoom()#{cc.maxZoom}){
var pos
# Cartographie OpenStreetMap
map_id=map
osm_attrib=test
min_zoom=1
max_zoom=13
map_x=48.227
map_y=6.611
map_default_zoom=8
map_basic_layer_name=Basique
map_enable_on_click=true
# Cartographie OpenStreetMap

# Marqueur de caméra
padding=20
max_zoom_marker=11
# Marqueur de caméra
                <ui:repeat var="marker" value="#{consultationBean.markers}">
                    <util:mapMarker/> 
                </ui:repeat>
                <ui:repeat var="camera" value="#{consultationBean.cameras}">
                    <util:mapMarker id="#{camera.code}"/> 
                </ui:repeat>
@Override
public void encodeBegin(FacesContext context) throws IOException{
    padding = Integer.parseInt((String) AppUtil.getProperty(PADDING_PROP));
    maxZoom = Integer.parseInt((String) AppUtil.getProperty(MAX_ZOOM_MARKER_PROP));
    latitude = (float) 47.67876;
    longitude = (float) 6.97061;
    super.encodeBegin(context);
}
<h:body>
    <!-- INTERFACE -->
    <composite:interface componentType="mapMarkersContainer">
        <composite:attribute name="cameras" type="java.util.List" />
    </composite:interface>

    <!-- IMPLEMENTATION -->
    <composite:implementation>

    </composite:implementation>
</h:body>
</html>
@FacesComponent(value = "mapMarkersContainer")
public class MapMarkersContainer extends UINamingContainer {
    private List<Camera> cameras;

    private Integer currentIndex = 0;

    public List<Camera> getCameras() {
        currentIndex++;
        return cameras;
    }

    public void setCameras(List<Camera> cameras) {
        this.cameras = cameras;
    }

    public Integer getCurrentIndex() {
        return currentIndex;
    }

    public void setCurrentIndex(Integer currentIndex) {
        this.currentIndex = currentIndex;
    }
}
@FacesComponent(value = "mapMarker")
public class MapMarker extends UINamingContainer {

    private static final String PADDING_PROP = "padding";
    private static final String MAX_ZOOM_MARKER_PROP = "max_zoom_marker";

    private Float longitude;
    private Float latitude;
    private String popUpContent;
    private Integer padding;
    private Integer maxZoom;
    private Camera camera;

    public MapMarker() {
        padding = Integer.parseInt((String) AppUtil.getProperty(PADDING_PROP));
        maxZoom = Integer.parseInt((String) AppUtil.getProperty(MAX_ZOOM_MARKER_PROP));
    }

    @Override
    public void encodeBegin(FacesContext context) throws IOException {
        padding = Integer.parseInt((String) AppUtil.getProperty(PADDING_PROP));
        maxZoom = Integer.parseInt((String) AppUtil.getProperty(MAX_ZOOM_MARKER_PROP));
        MapMarkersContainer mapMarkersContainer = (MapMarkersContainer) FacesUtils.findComponentById(context,
                "mapMarkersContainer");
        Integer cameraIndex = mapMarkersContainer.getCurrentIndex();
        Camera camera = mapMarkersContainer.getCameras().get(cameraIndex);
        latitude = camera.getY();
        longitude = camera.getX();
        popUpContent = camera.toString();
        setId(camera.getNom());
        super.encodeBegin(context);
    }

    public Float getLongitude() {
        return longitude;
    }

    public void setLongitude(Float longitude) {
        this.longitude = longitude;
    }

    public Float getLatitude() {
        return latitude;
    }

    public void setLatitude(Float latitude) {
        this.latitude = latitude;
    }

    public String getPopUpContent() {
        return popUpContent;
    }

    public void setPopUpContent(String popUpContent) {
        this.popUpContent = popUpContent;
    }

    public Integer getPadding() {
        return padding;
    }

    public void setPadding(Integer padding) {
        this.padding = padding;
    }

    public Integer getMaxZoom() {
        return maxZoom;
    }

    public void setMaxZoom(Integer maxZoom) {
        this.maxZoom = maxZoom;
    }

    public Camera getCamera() {
        return camera;
    }

    public void setCamera(Camera camera) {
        this.camera = camera;
    }

}
<ui:composition template="/xhtml/common/layout.xhtml">
    <ui:define name="headTitle">
        <h:outputText value="#Cartographie#" />
    </ui:define>

    <ui:define name="header">
        <ui:include src="/xhtml/common/header.xhtml">
            <ui:param name="headerClass" value="banner-thin" />
        </ui:include>
    </ui:define>

    <ui:define name="content">

        <util:mapMarkersContainer id="mapMarkersContainer"/>
        <div id="content" class="content-home ui-corner-bottom">

            <h2 class="main-title content-title light-bg light-bordered-top">
                <h:outputText value="#Cartographie#" />
            </h2>
            <h:panelGroup id="mapPanelGroup">
                <util:map id="mapContainer">
                    <ui:repeat id="repeat" var="camera" value="#{consultationBean.cameras}">
                        <util:mapMarker/> 
                    </ui:repeat>
                </util:map>
            </h:panelGroup>
        </div>
    </ui:define>
</ui:composition>
</html>
    /**
 * Le Class ConsultationBean.
 */
@Controller
@Scope("view")
@SuppressWarnings("serial")
public class ConsultationBean implements Serializable {

    /** Le cameras. */
    private List<Camera> cameras;

    /** Le markers. */
    private List<MapMarker> markers;

    private MapMarkersContainer mapMarkersContainer;

    /** Le camera service. */
    @Autowired
    private CameraService cameraService;

    /**
     * Initialise le.
     * 
     * @throws IOException
     */
    @PostConstruct
    public void init() throws IOException {
        cameras = cameraService.findAll();
        mapMarkersContainer = (MapMarkersContainer) FacesUtils.findComponentById(FacesContext.getCurrentInstance(),
                "mapMarkersContainer");
        mapMarkersContainer.setCameras(cameras);
    }

    /**
     * Getter : retourne le markers.
     * 
     * @return le markers
     */
    public List<MapMarker> getMarkers() {
        return markers;
    }

    /**
     * Setter : affecte le markers.
     * 
     * @param markers le markers
     */
    public void setMarkers(List<MapMarker> markers) {
        this.markers = markers;
    }

    public List<Camera> getCameras() {
        return cameras;
    }

    public void setCameras(List<Camera> cameras) {
        this.cameras = cameras;
    }
}