Ich habe meinen Code vollständig geändert. Aber aktiver Index zeigt immer noch Probleme. Manchmal wird es aufgerufen und manchmal nicht. Was stimmt mit dem folgenden xhtml-Code nicht?Primefaces tabview aktiven Index funktioniert nicht richtig
<?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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" >
<h:head>
<title>Admin Panel</title>
<style type="text/css">
.ui-accordion .ui-accordion-content{
background-color: #eedae3;
}
.ui-accordion .ui-accordion-header {
height: 30px;
background-color: #e74f54;
}
.ui-tabs .ui-tabs-nav li{
background-color: #6f97df;
height: 35px;
}
.datatable{
background-color: #eedae3;
}
</style>
</h:head>
<h:body>
<p:tabView id="tabView" activeIndex="#{profileInfoManagedBean.myCurrentTab}" >
<p:ajax event="tabChange" listener="#{profileInfoManagedBean.tabIsChangedKana}" />
<p:tab id="locationInfoTab" title="Location Info">
<h:form id="form1">
<p:growl showDetail="true" />
<p:panel header="New Country">
<h:panelGrid columns="3" cellpadding="5" cellspacing="5">
<p:column>
<h:outputLabel for="country" value="Country: "></h:outputLabel>
</p:column>
<p:column>
<p:inputText id="country" value="#{profileInfoManagedBean.country.country}" required="true" label="City">
<f:validateLength minimum="5" maximum="20" />
<p:ajax event="blur" update="msg1"></p:ajax>
</p:inputText>
</p:column>
<p:column>
<p:message id="msg1" for="country" display="icon"></p:message>
</p:column>
</h:panelGrid>
<p:commandButton type="submit" action="#{profileInfoManagedBean.addCountry}" value="Save" ajax="true" ></p:commandButton>
</p:panel>
</h:form>
<p:separator />
<h:form id="countryDataTableForm">
<p:panel>
<p:growl id="messagesww" />
<p:confirmDialog id="confirmDialog" message="Are you sure you want to delete the selected row ?"
header="Deleting Row" severity="alert" widgetVar="confirmation1">
<p:commandButton id="confirm" value="Yes Sure" update="messagesww" oncomplete="confirmation1.hide()"
action="#{profileInfoManagedBean.deleteObject}" />
<p:commandButton id="decline" value="Not Yet" onclick="confirmation1.hide()" type="button" />
</p:confirmDialog>
<p:dataTable style="width: 700px;" var="coun" value="#{profileInfoManagedBean.countryList}" selection="#{profileInfoManagedBean.deletingObj}" rowKey="#{coun.countryId}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginator="true" rows="5" rowsPerPageTemplate="10,15,20,25" editable="true">
<p:ajax event="rowEdit" update="@this"
listener="#{profileInfoManagedBean.onEditRow}" />
<p:column headerText="Country">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{coun.country}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{coun.country}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column id="inactive" filterBy="#{coun.isActive}"
headerText="isActive" footerText="exact"
filterOptions="#{profileInfoManagedBean.isActiveDropDown}"
filterMatchMode="exact">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{coun.isActive}"></h:outputText>
</f:facet>
<f:facet name="input">
<h:selectOneMenu value="#{coun.isActive}" >
<f:selectItem itemLabel="True" itemValue="true" />
<f:selectItem itemLabel="False" itemValue="false" />
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Edit">
<p:rowEditor />
</p:column>
<p:column headerText="Delete">
<p:commandButton type="button" onclick="confirmation1.show()"
id="delCountry" title="Delete Country" icon="ui-icon ui-icon-trash" />
</p:column>
<p:column selectionMode="single">
<f:facet name="header">
<h:outputText value="select" />
</f:facet>
</p:column>
</p:dataTable>
</p:panel>
</h:form>
</p:tab>
<p:tab id="basicInfoTab" title="Basic info">
<p:accordionPanel id="aPanel1">
<p:tab id="tab2" title="basic info">
<h:form id="dkk">
This is basic info tab.
</h:form>
<h:form id="ddkk">
This is basic info tab.
</h:form>
</p:tab>
</p:accordionPanel>
</p:tab>
</p:tabView>
</h:body>
</html>
Ich primefaces 3.2, JSF 2.1, Tomcat 7, netbeans 7.1, Hibernate3
aktualisieren mit: @rags ich war ein Problem in activeindex haben. Nachdem der ActiveIndex und alles begann zu arbeiten, fing ich an, meinen Code zu vergleichen, um zu wissen, was falsch lief. Wenn ich nun in den Eingabefeldern und anderen Komponenten das Erforderlich = "Falsch" zu Erforderlich = "Wahr" änderte, wird der ActiveIndex nicht mehr funktionieren.
<?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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" >
<h:head>
<title>Admin Panel</title>
<script type="text/javascript">
function deleteObj(x){
//alert("checking javascript - " + x);
}
</script>
<style type="text/css">
.ui-accordion .ui-accordion-content{
background-color: #eedae3;
}
.ui-accordion .ui-accordion-header {
height: 30px;
background-color: #e74f54;
}
.ui-tabs .ui-tabs-nav li{
background-color: #6f97df;
height: 35px;
}
.datatable{
background-color: #eedae3;
}
</style>
</h:head>
<h:body>
<h:form id="mainForm">
<p:growl id="growl" showDetail="true" />
<p:confirmDialog id="confirmDialog" message="Are you sure you want to delete the selected row ?"
header="Deleting Row" severity="alert" widgetVar="confirmation1">
<p:commandButton id="confirm" value="Yes Sure" update=":mainForm:growl mainForm:myTabViewID:aPanel:countryTable" oncomplete="confirmation1.hide()"
action="#{profileInfoManagedBean.deleteObject}">
<!-- <f:ajax render=":mainForm" />-->
</p:commandButton>
<p:commandButton id="decline" value="Not Yet" onclick="confirmation1.hide()" type="button" />
</p:confirmDialog>
<p:tabView id="myTabViewID" activeIndex="#{profileInfoManagedBean.myCurrentTab}" >
<p:ajax event="tabChange" listener="#{profileInfoManagedBean.tabIsChanged}" />
<p:tab id="locationInfoTab" title="Location Info">
<p:accordionPanel id="aPanel" activeIndex="#{profileInfoManagedBean.myCurrentATab}">
<p:tab id="tab1" title="Country">
<p:outputPanel>
<h:panelGrid columns="3" cellpadding="5" cellspacing="5">
<p:column>
<h:outputLabel for="country" value="Country: "></h:outputLabel>
</p:column>
<p:column>
<p:inputText id="country" value="#{profileInfoManagedBean.country.country}" required="false" label="Country">
<p:watermark value="Enter a country name" for="country" />
<f:validateLength for="country" minimum="5" maximum="20" />
<p:ajax event="blur" update="msg1" />
<f:validateRequired for="country" />
</p:inputText>
</p:column>
<p:column>
<p:message id="msg1" for="country" display="icon"></p:message>
</p:column>
</h:panelGrid>
<p:commandButton value="Add" action="#{profileInfoManagedBean.addCountry}" update=":mainForm" style="margin:10px 0" id="btnAdd"/>
</p:outputPanel>
<p:separator />
<p:outputPanel id="countryTable">
<p:dataTable style="width: 700px;" var="coun" value="#{profileInfoManagedBean.countryList}" selection="#{profileInfoManagedBean.deletingObj}" rowKey="#{coun.countryId}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginator="true" rows="5" rowsPerPageTemplate="10,15,20,25" editable="true">
<p:ajax event="rowEdit" update="@this"
listener="#{profileInfoManagedBean.onEditRow}" />
<p:confirmDialog id="confirmDialog" message="Are you sure you want to delete the selected row ?"
header="Deleting Row" severity="alert" widgetVar="confirmation2">
<p:commandButton id="confirm" value="Yes Sure" update=":mainForm" oncomplete="confirmation2.hide()"
action="#{profileInfoManagedBean.deleteObject}" />
<p:commandButton id="decline" value="Not Yet" onclick="confirmation2.hide()" type="button" />
</p:confirmDialog>
<p:column headerText="Country">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{coun.country}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{coun.country}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column id="inactive" filterBy="#{coun.isActive}"
headerText="isActive" footerText="exact"
filterOptions="#{profileInfoManagedBean.isActiveDropDown}"
filterMatchMode="exact">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{coun.isActive}"></h:outputText>
</f:facet>
<f:facet name="input">
<h:selectOneMenu value="#{coun.isActive}" >
<f:selectItem itemLabel="True" itemValue="true" />
<f:selectItem itemLabel="False" itemValue="false" />
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Edit">
<p:rowEditor />
</p:column>
<p:column headerText="Delete">
<p:commandButton update=":mainForm:growl :mainForm:myTabViewID:aPanel:countryTable" icon="ui-icon-circle-close" action="#{profileInfoManagedBean.deleteCountry(coun.countryId)}"
title="Delete Country" style="border-color:#FF0000" />
</p:column>
</p:dataTable>
</p:outputPanel>
</p:tab>
<p:tab id="tab2" title="Province">
<p:outputPanel>
<h:panelGrid columns="3" cellpadding="5" cellspacing="5">
<p:column>
<p:selectOneMenu value="#{profileInfoManagedBean.province.country.countryId}" id="cou"
required="false">
<f:selectItem itemLabel="Select Here" itemValue="" />
<f:selectItems
value="#{profileInfoManagedBean.countryList}"
var="coun" itemValue="#{coun.countryId}" itemLabel="#{coun.country}" />
<p:ajax event="blur" update="msg2" />
</p:selectOneMenu><p:message id="msg2" for="cou" display="icon" />
</p:column>
<p:column>
<h:outputLabel for="province" value="Province: "></h:outputLabel>
</p:column>
<p:column>
<p:inputText id="province" value="#{profileInfoManagedBean.province.province}" required="false" label="Province">
<p:watermark value="Enter a province name" for="province" />
<f:validateLength minimum="5" maximum="20" />
<p:ajax event="blur" update="msg3"></p:ajax>
</p:inputText>
</p:column>
<p:column>
<p:message id="msg3" for="province" display="icon"></p:message>
</p:column>
</h:panelGrid>
<p:commandButton value="Add" action="#{profileInfoManagedBean.addProvince}" update=":mainForm" style="margin:10px 0" id="btnAddProvince"/>
</p:outputPanel>
<p:separator />
<p:outputPanel id="provinceTable">
<p:dataTable style="width: 700px;" var="prov" value="#{profileInfoManagedBean.provinceList}" selection="#{profileInfoManagedBean.deletingObj}" rowKey="#{prov.provinceId}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginator="true" rows="5" rowsPerPageTemplate="10,15,20,25" editable="true">
<p:ajax event="rowEdit" update="@this"
listener="#{profileInfoManagedBean.onEditRow}" />
<p:column headerText="Province">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{prov.province}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{prov.province}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column id="inactive" filterBy="#{coun.isActive}"
headerText="isActive" footerText="exact"
filterOptions="#{profileInfoManagedBean.isActiveDropDown}"
filterMatchMode="exact">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{prov.isActive}"></h:outputText>
</f:facet>
<f:facet name="input">
<h:selectOneMenu value="#{prov.isActive}" >
<f:selectItem itemLabel="True" itemValue="true" />
<f:selectItem itemLabel="False" itemValue="false" />
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Edit">
<p:rowEditor />
<p:commandButton icon="ui-icon-circle-close" onclick="deleteObj(5)" title="Delete Province" style="border-color:#FF0000" />
</p:column>
<p:column headerText="Delete">
<p:commandButton type="button" onclick="confirmation1.show()"
id="delProvince" title="Delete Province" icon="ui-icon ui-icon-trash" />
</p:column>
<p:column selectionMode="single">
<f:facet name="header">
<h:outputText value="select" />
</f:facet>
</p:column>
</p:dataTable>
</p:outputPanel>
</p:tab>
</p:accordionPanel>
</p:tab>
<p:tab id="basicInfoTab" title="Basic info">
<p:accordionPanel id="aPanel1">
<p:tab id="tab2" title="basic info">
This is basic info tab.
This is basic info tab.
</p:tab>
</p:accordionPanel>
</p:tab>
</p:tabView>
</h:form>
</h:body>
</html>
Ich habe viele Tabview und Akkordeon Tabs. activeindex
hat funktioniert, wenn ich required="false"
für jede Komponente eines Tabs gemacht habe. Ändern Sie alle zu required="true"
verursacht activeindex
nicht zu arbeiten, aber wenn Sie zu required="false"
von Komponenten nur einer Registerkarte activeindex
funktioniert gut.
Was genau ist das Problem konfrontiert ist nicht klar. Kannst du bitte Details angeben? Es ist auch nützlich, wenn die Quelle der Bohne gepostet wird – rags