Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 JSF策略适用于SelectOne菜单中的长列表,例如时区_Jsf 2_Selectonemenu - Fatal编程技术网

Jsf 2 JSF策略适用于SelectOne菜单中的长列表,例如时区

Jsf 2 JSF策略适用于SelectOne菜单中的长列表,例如时区,jsf-2,selectonemenu,Jsf 2,Selectonemenu,我正在为用户实现一种指定时区的方法。没有什么新鲜事。我想听听人们怎么说,当用户需要从几百个选项的列表中进行选择,但可能不知道列表中的正确值时,这是一种处理案例的好策略。我知道我可以使用像autocomplete这样的工具,但这只有在人们知道他们在寻找什么的情况下才有效。当然,国家应该是显而易见的,但是。。。最低公分母(有些人很笨……像我一样;) 有超过400个不同的iso时区(不包括EST、PST等,我不包括在内)。这是一个很长的清单。如果我们让用户先在另一个SelectOne菜单中选择他们所在

我正在为用户实现一种指定时区的方法。没有什么新鲜事。我想听听人们怎么说,当用户需要从几百个选项的列表中进行选择,但可能不知道列表中的正确值时,这是一种处理案例的好策略。我知道我可以使用像autocomplete这样的工具,但这只有在人们知道他们在寻找什么的情况下才有效。当然,国家应该是显而易见的,但是。。。最低公分母(有些人很笨……像我一样;)

有超过400个不同的iso时区(不包括EST、PST等,我不包括在内)。这是一个很长的清单。如果我们让用户先在另一个SelectOne菜单中选择他们所在的国家,就可以方便地进行划分。但有200多个国家。那么,如何呈现200个易于合作且高效的国家


我已经在一个jar中创建并打包了许多类来读取Olson时区文件(iso3166.tab和zone.tab),并提供了时区和时区国家的ArrayList,包括将指定的国家排在列表的顶部。但是现在我想学习一种更好的方式来展示国家和时区。我自己做了这件事,因为我发现提取和关联国家代码和时区代码是一种更简单、更干净的方法。

对于您的特殊要求,我可以考虑使用一个世界地图,就像您在Linux发行版(如以格林威治为中心的Ubuntu)中看到的那样。然后为您拥有的数据放置标记,并让用户选择最近的标记

有关详细信息,请参见时区选择

为此,您可以使用Primefaces组件并添加如下覆盖:

 LatLng coord1 = new LatLng(36.885233, 30.702323); 
 PlaceResult placeResultObj1 = new  new PlaceResult("660")

 //Basic marker  
 simpleModel.addOverlay(new Marker(coord1, "Konyaalti", placeResultObj1)); 
PlaceResult.java

public class PlaceResult {
    private String utc_offset;

    public PlaceResult(String utc_offset){
        this.utc_offset = utc_offset;
    }

    public String getUtc_offset() {
        return utc_offset;
    }

    public void setUtc_offset(String utc_offset) {
        this.utc_offset = utc_offset;
    }

}
另一种方法是使用谷歌地图上的Places库。使用它,您可以通过各种方法获取
google.maps.places.PlaceResult
对象,我喜欢自动完成功能,您可以在其中选择城市。选择城市后,可以在信息窗口中显示utc_偏移

你可以看看这个

目前,大多数城市似乎还没有设置utc_偏移量。我发现有utc_偏移量的地址之一是

澳大利亚的纽伊机场运输班车。然后可以将off_集作为输入隐藏参数传递,以将值提交给服务器

另见:


我想,作为一个用户,我更喜欢按字母顺序排列的时区,而不是其他一些确定的优先排序模式。:)但我知道,如果你主要期待来自北美的用户,你可能会把加拿大和美国放在榜首,然后按字母顺序列出其余的。但这仍然是一个很长的清单。不幸的是,这是一个太重的问题。我更感兴趣的是人们如何使用SelectOneMenu。如果我正在构建一个安装向导,我就可以看到这个解决方案,但是我想的太多了。我以后可能会把它作为练习来尝试,但现在不行。谢谢你的建议。