- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 jsf 1.2 编写了一个程序。在此程序中,用户需要选择他的国家/地区 和城市。当他选择一个国家/地区时,他必须在下拉列表中看到其中的州列表;当他选择一个州时,他必须在下拉列表中看到其中的城市。
为此,我创建了 2 个类、1 个内部类和一个 jsf 页面。
当我选择一个国家时,我会立即看到州的下拉列表。
问题是当状态改变时,城市的下拉列表不会立即出现。只有在状态发生第二次变化后,才能看到城市的下拉列表。
(注意:我无法删除此代码中的方法 cityChangeListener()
,因为我需要使用国家代码、州代码、城市代码和随机数生成一个 ID。 )
如有任何帮助,我们将不胜感激。
这是我的代码(4 个文件):
文件:faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="1.2"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<managed-bean>
<managed-bean-name>formBackingBean</managed-bean-name>
<managed-bean-class>FormBackingBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope></managed-bean>
</faces-config>
文件:newjsf.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<h:form>
<h:inputText
id="input"
value="#{formBackingBean.input}"
immediate="true"
disabled="true"
/>
<br/>
<h:selectOneMenu
id="country"
value="#{formBackingBean.country}"
valueChangeListener="#{formBackingBean.countryChangeListener}"
immediate="true"
onchange="submit();"
>
<f:selectItems
id="countries"
value="#{formBackingBean.countries}"
/>
</h:selectOneMenu>
<br/>
<h:selectOneMenu
id="state"
value="#{formBackingBean.state}"
valueChangeListener="#{formBackingBean.stateChangeListener}"
immediate="true"
onchange="submit();"
rendered="#{formBackingBean.states!=null}"
>
<f:selectItems
id="states"
value="#{formBackingBean.states}"
/>
</h:selectOneMenu>
<br/>
<h:selectOneMenu
id="city"
value="#{formBackingBean.city}"
immediate="true"
onchange="submit();"
rendered="#{formBackingBean.cities!=null}"
valueChangeListener="#{formBackingBean.cityChangeListener}"
>
<f:selectItems
id="cities"
value="#{formBackingBean.cities}"
/>
</h:selectOneMenu>
</h:form>
</f:view>
文件:FormBackingBean.java
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
public class FormBackingBean {
private String input;
private String country;
private String state;
private String city;
private List<SelectItem>countries=GeoMapLister.WORLD.getNamesOfPlacesWithin();//MapLister.countryList;
private List<SelectItem>states=null;
private List<SelectItem>cities=null;
public FormBackingBean() {
}
public String getCity() {
return city;
}
public String getCountry() {
return country;
}
public String getState() {
return state;
}
public void setCity(String city) {
this.city = city;
FacesContext.getCurrentInstance().renderResponse();
}
public void setCountry(String country) {
this.country = country;
FacesContext.getCurrentInstance().renderResponse();
}
public void setState(String state) {
this.state = state;
}
public List<SelectItem> getCities() {
return cities;
}
public List<SelectItem> getCountries() {
return countries;
}
public List<SelectItem> getStates() {
return states;
}
public void setCities(List<SelectItem> cities) {
this.cities = cities;
}
public void setCountries(List<SelectItem> countries) {
this.countries = countries;
}
public void setStates(List<SelectItem> states) {
this.states = states;
}
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
public void countryChangeListener(final ValueChangeEvent valueChangeEvent){
input=valueChangeEvent.getNewValue().toString();
states=GeoMapLister.WORLD.getPlacesWithin().get(input).getNamesOfPlacesWithin();
state=null;
cities=null;
city=null;
FacesContext.getCurrentInstance().renderResponse();
}
public void stateChangeListener(final ValueChangeEvent valueChangeEvent){
input=valueChangeEvent.getNewValue().toString();
cities=GeoMapLister.WORLD.getPlacesWithin()
.get(country).getPlacesWithin().get(input)
.getNamesOfPlacesWithin();
city=null;
FacesContext.getCurrentInstance().renderResponse();
}
public void cityChangeListener(final ValueChangeEvent valueChangeEvent){
input=valueChangeEvent.getNewValue().toString();
FacesContext.getCurrentInstance().renderResponse();
}
}
文件:GeoMapLister.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.faces.model.SelectItem;
public class GeoMapLister {
public static class GeographicalLocation{
private final GeographicalLocation parent;
private final String code;
private final String name;
private final List<SelectItem>namesOfPlacesWithin;
private final HashMap<String,GeographicalLocation>placesWithin;
public GeographicalLocation(GeographicalLocation parent,String code, String name,boolean leaf) {
this.parent = parent;
this.name = name;
this.code= code;
ArrayList<SelectItem> namesofplaceswithin = null;
HashMap<String,GeographicalLocation> placeswithin = null;
if(!leaf){
namesofplaceswithin = new ArrayList<SelectItem>();
namesofplaceswithin.add(new SelectItem(null, "- select -"));
placeswithin = new HashMap<String,GeographicalLocation>();
placeswithin.put(null, null);
}
this.namesOfPlacesWithin = namesofplaceswithin;
this.placesWithin = placeswithin;
}
public String getName() {
return name;
}
public GeographicalLocation getParent() {
return parent;
}
public List<SelectItem> getNamesOfPlacesWithin() {
return namesOfPlacesWithin;
}
public String getCode() {
return code;
}
public GeographicalLocation addPlaceWithin(String code,String name,boolean leaf){
GeographicalLocation newGeographicalLocation = new GeographicalLocation(this, code,name,leaf);
placesWithin.put(code,newGeographicalLocation);
namesOfPlacesWithin.add(new SelectItem(code, name));
return newGeographicalLocation;
}
public HashMap<String, GeographicalLocation> getPlacesWithin() {
return placesWithin;
}
List<SelectItem> getPlacesWithin(String input) {
return placesWithin.get(input).namesOfPlacesWithin;
}
}
public static final GeographicalLocation WORLD=new GeographicalLocation(null, "WORLD","WORLD",false);
static
{
GeographicalLocation IN = WORLD.addPlaceWithin("IN", "India", false);
GeographicalLocation MH = IN.addPlaceWithin("MH", "Maharashtra", false);
MH.addPlaceWithin("MU", "Mumbai", true);
MH.addPlaceWithin("PU", "Pune", true);
MH.addPlaceWithin("NA", "Nashik", true);
GeographicalLocation KA = IN.addPlaceWithin("KA", "Karnataka", false);
KA.addPlaceWithin("BA", "Bangalore", true);
KA.addPlaceWithin("MA", "Mangalore", true);
GeographicalLocation BE = IN.addPlaceWithin("BE", "West Bengal", false);
BE.addPlaceWithin("KO", "Kolkata", true);
BE.addPlaceWithin("KH", "Kharagpur", true);
//--------------
GeographicalLocation UK = WORLD.addPlaceWithin("UK", "U.K.", false);
GeographicalLocation YO = UK.addPlaceWithin("YO", "York", false);
YO.addPlaceWithin("SS", "Sussex", true);
YO.addPlaceWithin("MS", "Middlesex", true);
//--------------
GeographicalLocation US = WORLD.addPlaceWithin("US", "U.S.A.", false);
GeographicalLocation NY = US.addPlaceWithin("NY", "New York", false);
NY.addPlaceWithin("NC", "New York city", true);
NY.addPlaceWithin("NU", "New York urban", true);
GeographicalLocation CA = US.addPlaceWithin("CA", "California", false);
CA.addPlaceWithin("WA", "Washington, district of California", true);
CA.addPlaceWithin("SI", "Silicon Valley", true);
CA.addPlaceWithin("VS", "Very-Silly-Con Valley", true);
}
}
最佳答案
你试过阅读here吗? ?有一个使用子菜单的示例。
关于java - JSF 1.2 : Options for dropdown list not updated when it is set for the first time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15675621/
我想使用 R 预定义这样的列表 DATA<-list( list(list(),list(),list()), list(list(),list(),list()), list(list(),l
如何将一个列表添加到另一个列表,返回一个列表的列表? foo :: [a] -> [a] -> [[a]] 例如,我想要的结果是: foo [1,2] [3,4] 将是 [[1,2], [3,4]]。
我还没有在这里找到类似问题的解决方案,所以我会寻求你的帮助。 有 2 个列表,其中之一是列表列表: categories = ['APPLE', 'ORANGE', 'BANANA'] test_re
这个问题不同于Converting list of lists / nested lists to list of lists without nesting (这会产生一组非常具体的响应,但无法解决
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在下面的代码中,get()被调用并将其结果分配给类型为 List> 的变量. get()返回 List>并在类型参数为 T 的实例上调用设置为 ? ,所以它应该适合。 import java.util
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在insufficiently-polymorphic 作者说: def foo[A](fst: List[A], snd: List[A]): List[A] There are fewer way
我有下面的代码有效。 class ListManipulate(val list: List, val blockCount: Int) { val result: MutableList>
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
在 scala (2.9) 中转换列表列表的最佳方法是什么? 我有一个 list : List[List[A]] 我想转换成 List[A] 如何递归地实现这一点?或者还有其他更好的办法吗? 最佳答案
我编写了这个函数来确定给定元素是否存储在元组列表的列表中,但目前它只搜索第一个列表。我将如何搜索其余列表? fun findItem (name : command, ((x,y)::firstlis
我创建了一个类名 objectA,它有 4 个变量:约会时间;字符串文本;变量 1,变量 2 我需要创建一个 ObjectA() 列表。然后首先按时间对它们进行分组,其次按 var1,然后按 var2
我有一套说法 char={'J','A'} 和列表的列表 content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9
我有以下列表 List >>> titles = new ArrayList >>> ();我想访问它的元素,但我不知道该怎么做.. 该列表有 1 个元素,它又包含 3 个元素,这 3 个元素中的
转换 List[List[Long]] 的最佳方法是什么?到 List[List[Int]]在斯卡拉? 例如,给定以下类型列表 List[List[Long]] val l: List[List[Lo
我有一个来自 Filereader (String) 的 List-List,如何将其转换为 List-List (Double):我必须返回一个包含 line-Array 的第一个 Values 的
我收集了List> 。我需要将其转换为List> 。这是我尝试过的, List> dataOne = GetDataOne(); var dataTwo = dataOne.Select(x => x
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
我是一名优秀的程序员,十分优秀!