मुझे दो सिलेक्टऑनमेनू नियंत्रणों को लागू करने में समस्या हो रही है, जहां दूसरे में डेटा पहले किए गए चयन पर निर्भर करता है। प्राइमफेस शोकेस पर यह उदाहरण लगभग वही है जैसा मैं कार्यान्वित करना चाहता हूं: http://www.primefaces.org/showcase-labs/ui/pprSelect.jsfप्राइमफेस 3.0 के साथ समस्या। एम 2 सिलेक्टऑनमेनू अजाक्स व्यवहार
सिवाय इसके कि मुझे डेटाबेस से डेटा प्राप्त करना है।
उपरोक्त उदाहरण एक ही प्रोजेक्ट में सही तरीके से काम कर रहा है। मैं ग्लासफ़िश 3.1 और प्राइमफेस 3.0.एम 2 के साथ नेटबीन्स 7.0 का उपयोग कर रहा हूं, नवीनतम ड्रॉप (20 जून 2011)।
जेएसएफ पृष्ठ और प्रबंधित बीन का स्रोत कोड संलग्न है।
<?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://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head><title>Facelet Title</title></h:head>
<h:body>
<p:log />
<center>
<h:form>
<h:outputText value="State: "/>
<p:selectOneMenu id="selectState" value="#{stateCityBean.selectedStateArray}">
<f:selectItem itemLabel="Select Any" itemValue="Empty String"/>
<p:ajax update="selectCity" listener="#{stateCityBean.updateCityMap}"/>
<f:selectItems value="#{stateCityBean.stateMap}" />
</p:selectOneMenu>
<p></p>
<h:outputText value="City: "/>
<p:selectOneMenu id="selectCity" value="#{stateCityBean.selectedCityArray}">
<f:selectItem itemLabel="Select Any" itemValue="Empty String"/>
<f:selectItems value="#{stateCityBean.cityMap}"/>
</p:selectOneMenu>
</h:form>
</center>
</h:body>
StateCityBean.java
package com.xyz.mbeans;
import com.iwizability.priceinfo.dao.*;
import com.iwizability.priceinfo.pojo.*;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.context.Flash;
import javax.faces.event.ValueChangeEvent;
@ManagedBean
@SessionScoped
public class StateCityBean {
private String selectedStateArray;
private Map<String, State> StateMap;
private Map<String, City> CityMap;
private String selectedCityArray;
public StateCityBean() {
System.out.println("Inside.............. ");
StateMap = new LinkedHashMap<String, State>();
CityMap = new LinkedHashMap<String, City>();
}
public String getSelectedStateArray() {return selectedStateArray;}
public void setSelectedStateArray(String selectedStateArray) {this.selectedStateArray = selectedStateArray;}
public Map<String, State> getStateMap() {
StateDaoImpl stateObj = new StateDaoImpl();
StateMap = stateObj.getState();
return StateMap;
}
public void setStateMap(Map<String, State> stateArray) {this.StateMap = stateArray;}
public String getSelectedCityArray() {return selectedCityArray;}
public void setSelectedCityArray(String selectedCityArray) {this.selectedCityArray = selectedCityArray;}
public Map<String, City> getCityMap() {
CityDaoImpl cityObj = new CityDaoImpl();
int stateId = 0;
if (selectedStateArray != null && !selectedStateArray.equals("")) {
stateId = StateMap.get(selectedStateArray).getId();
}
CityMap = cityObj.getCity(stateId);
return CityMap;
}
public void setCityMap(Map<String, City> CityArray) {
this.CityMap = CityArray;
}
public void updateCityMap() {
CityDaoImpl cityObj = new CityDaoImpl();
int stateId = 0;
if (selectedStateArray != null && !selectedStateArray.equals("")) {
stateId = StateMap.get(selectedStateArray).getId();
this.CityMap = cityObj.getCity(stateId);
}
}
}
डिबगिंग पर, मैं देख सकता हूँ कि updateCityMap विधि शुरू हो जाती है लेकिन SelectedStateArray चर रिक्त है। बाध्य CityMap चर के मान को बदलने के बल भी चुनिंदासिटी ड्रॉप डाउन को अपडेट नहीं करते हैं।
कि आप समझ गए हैं के रूप में, मैं JSF के लिए नया हूँ, लेकिन समस्या यह तथ्य यह है कि मैं टैग पुस्तकालय के विकास के संस्करण में एक अभी भी उपयोग कर रहा हूँ का संयोजन होता है ...
यह केवल आपकी समस्या का हिस्सा हो सकता है, लेकिन अपने अद्यतन विशेषता अपने शहर के लिए सीधे बात कर रहा है आईडी द्वारा घटक ड्रॉप डाउन 'अद्यतन =" selectCity "'। इसके साथ समस्या यह है कि जेएसएफ में ' 'डिफ़ॉल्ट रूप से बाल तत्वों को अपनी आईडी प्रीपेड करेगा। निम्नलिखित विशेषता को अपने ' 'पर निर्दिष्ट करने का प्रयास करें और देखें कि क्या यह आपकी समस्या को हल करता है,' prependId =" false "' –
@maple_shaft: इस तरह से मैंने देखा है कि सभी उदाहरणों में अद्यतन विशेषता का उपयोग किया गया है ... मैंने कोशिश की preendId अक्षम करना लेकिन यह समस्या को हल करने के लिए प्रतीत नहीं होता है। – agileai
तो, मैंने एक घटना = "valueChange" विशेषता को पी: AJAX में जोड़ा है और अब एक त्रुटि हो रही है: j_idt8: selectState: प्रमाणीकरण त्रुटि: मान वैध नहीं है सत्यापन त्रुटि को देखने पर, ऐसा लगता है कि वेब इस से भरा है मुसीबत। जेएसएफ सामान्य रूप से और प्राइमफेस के साथ विशेष रूप से: http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=6947 http://www.java.net/blogs/lamine_ba http : //www.coderanch.com/t/501774/JSF/java/JSF- प्राइमफ़ेस- प्रमाणीकरण- त्रुटि- वैल्यू मैंने विचारों के दायरे को बदलने की कोशिश की, हालांकि, यह मेरे लिए चाल नहीं कर रहा है ... – agileai