- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下失败的 Facelet 代码:
<h:form>
<rich:select defaultLabel="Seleccionar región">
<f:selectItems value="#{StaticInfo.regiones}" var="region" itemValue="#{region.reg_Cod}" itemLabel="#{region.reg_Nombre}" />
<a4j:ajax event="change" render="provs" />
</rich:select>
<rich:select id="provs" defaultLabel="Seleccionar provincia">
<f:selectItems value="#{region.provincias}" var="prov" itemValue="#{prov.prov_Cod}" itemLabel="#{prov.prov_Nombre}" />
</rich:select>
</h:form>
支持 bean:
public class StaticInfoBean {
private ArrayList<Region> regiones;
public StaticInfoBean() {
try
{
RegionDAO regDao = new RegionDAO();
regDao.prepareConnection();
ProvinciaDAO provDao = new ProvinciaDAO();
provDao.setCon(regDao.getCon());
ComunaDAO comDao = new ComunaDAO();
comDao.setCon(regDao.getCon());
regiones = regDao.listaRegiones();
for(Region r : regiones)
{
regDao.findProvincias(r);
for(Provincia p : r.getProvincias())
{
provDao.findComunas(p);
for(Comuna c : p.getComunas())
{
comDao.findColegios(c);
}
}
}
regDao.getCon().close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public ArrayList<Region> getRegiones() {
return regiones;
}
public void setRegiones(ArrayList<Region> regiones) {
this.regiones = regiones;
}
public String toString() {
return regiones.toString();
}
}
类区域
:
public class Region {
private String Reg_Cod;
private String Reg_Nombre;
private ArrayList<Provincia> provincias;
//Getters and setters
问题:第一个 rich:select
标记工作得很好。但是第二个不显示任何值。不仅如此,我在 NetBeans 中工作,每当我在 EL 中键入“prov”时,它都不会显示类 Provincia
的方法列表。
感谢任何帮助。
编辑:我编辑了代码并执行了以下操作:
<h:form>
<rich:select defaultLabel="Seleccionar región" value="#{StaticInfo.regionElegida}">
<f:selectItems value="#{StaticInfo.regiones}" var="region" itemValue="#{region.reg_Cod}" itemLabel="#{region.reg_Nombre}" />
<a4j:ajax event="click" render="provs" execute="@this" />
<a4j:ajax event="click" render="texto" execute="@this" />
</rich:select>
<h:outputText id="texto" value="#{StaticInfo.regionElegida.reg_Nombre}" />
<rich:select id="provs" defaultLabel="Seleccionar provincia" value="#{StaticInfo.provinciaElegida}" rendered="#{not empty StaticInfo.regionElegida}">
<f:selectItems value="#{StaticInfo.regionElegida.provincias}" var="prov" itemValue="#{prov.prov_Cod}" itemLabel="#{prov.prov_Nombre}" />
</rich:select>
</h:form>
令人惊讶的是,outputText 没有被显示!为什么会出现这种情况?
最佳答案
f:selectItems
中设置的变量 region
仅在其范围内可用。您必须将每个 rich:select
绑定(bind)到一个支持 bean 属性。
因此,您需要更改 bean 代码,将所选区域的属性添加到 bean:
public class StaticInfoBean {
private ArrayList<Region> regiones;
private Region regionElegida;
private Provincia provinciaElegida; // <-- you'll probably want this too...
// ... getters and setters and your initialization code
// and you need something to find the real region object that
// used the reg_Cod value got from rich:select, for now you can try this:
public void updateRegionElegida(AjaxBehaviorEvent e){
// set the chosen region to regionElegida,
// or the poor man's converter
for (Region region : regiones){
if(regionElegida.getReg_Cod() == region.getReg_cod()) {
regionElegida = region;
}
}
}
}
然后将您的 XHTML 更改为如下所示:
<h:form>
<rich:select value="#{StaticInfo.regionElegida}"
defaultLabel="Seleccionar región">
<f:selectItems value="#{StaticInfo.regiones}" var="region"
itemValue="#{region.reg_Cod}" itemLabel="#{region.reg_Nombre}" />
<a4j:ajax event="change" render="provs"
listener="#{StaticInfo.updateRegionElegida}" />
</rich:select>
<rich:select id="provs" value="#{StaticInfo.provinciaElegida}"
defaultLabel="Seleccionar provincia">
<f:selectItems value="#{StaticInfo.regionElegida.provincias}" var="prov"
itemValue="#{prov.prov_Cod}" itemLabel="#{prov.prov_Nombre}" />
</rich:select>
</h:form>
现在,进行转换的专业方法是使用自定义转换器,该转换器可以根据用于其选择小部件的表达式 itemValue
的值找到 Region 对象的适当实例。查看this example from another question .
请注意,rich:select
仅向默认 h:selectOneMenu
添加功能,您最好查看 its info page在SO这里。
关于java - JSF - selectItems 不会在列表内呈现列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11744876/
jsf中selectitem和selectitems标签有什么区别? 最佳答案 差异正是您所期望的。 selectitem 标签将单个项目添加到 HTML 列表,而 selectitems 标签添加多
我正在尝试根据查询将 asp:dropdownlist 绑定(bind)到一些站点核心项目。通过查询,我想返回继承模板“站点根”的项目。 当我使用: Sitecore.Context.Database
例如,在某些版本的JSF中,f:selectItems组件不支持title属性。 是否可以使用JSFC将JSF组件替换为纯HTML对应的组件,并执行类似的操作? 代替
我有一个数字列表(范围 500 - 5000,步长 500)。我想添加一个小数点 1000 -> 1.000; 2500 -> 2.500 等,但只是为了不将标签保存为值。我尝试了以下但没有用:
我有一个数字列表(范围 500 - 5000,步长 500)。我想添加一个小数点 1000 -> 1.000; 2500 -> 2.500 等,但只是为了不将标签保存为值。我尝试了以下但没有用:
如何从 List 中删除“abcd”的值. public class Sample { public static void main(String[] args) { List list=
我试图在我的 selectItem 中为每个默认添加一个选项,它绑定(bind)了一个数据源,之后我尝试为每个默认添加一个选项。我的问题是我总是看到数据源中的项目,但从来没有看到我的默认选项。这些是我
我试图让用户从 JSF 的下拉列表中选择一个集合的项目。 这是我正在使用的代码: 这是 MyBean 的代码: @ManagedBean
是否可以使用xpath语法进行基于日期的查询?我研究的一切都表明这是不可能的。我正在查询一组日历,只想取回一个月的数据-我可以使用哪些策略来实现这一目标? 2010年8月10日:编辑以获取更多信息 我
是否可以设置我周围我的链接文本是 itemLabel ? 我正在使用普通的太阳组件。 最佳答案 在 HTML 中不可能获得所需的结果。您需要为此添加一段 JavaScript。 哪里be
我有以下失败的 Facelet 代码: 支持 bean: public class StaticInfoBea
我是 SmartGWT 的新手,尝试以编程方式选择 SelectItem Widget 的项目。但没有找到解决方案。 这就是我想要的: 这是我当前的 SmartGWT 示例代码: SelectIte
我有一个乡村类(class): public class Country{ private Long id; private String name; } 以及具有两个 Count
我一直在研究复合组件,但遇到了一些我无法理解的问题。如果不使用复合组件,我会得到这样的东西: 我基本上将该片段变成了复合组件:
抱歉图片上有捷克语,但这并不重要。 在图片上,您可以在单击其下拉按钮后看到 SelectItem。在此下拉菜单的第一行,您可以看到额外的过滤输入,我需要将其删除。 我认为只有当您使用 DataSour
我正在尝试使用 selectOneMenu 制作过滤器。 我有两个类别,当一个类别被选中时,必须过滤显示的结果,还有第二个类别。 JSF 代码: Filter by topi
这个问题已经有答案了: How to populate options of h:selectOneMenu from database? (5 个回答) 已关闭 4 年前。 目标是正确获取 Sele
我有一个 SelectItem,它从数据库中获取数据。我需要向我选择的项目添加一个空字段。 我的代码看起来像这样,而且效果很好。 SelectItem editor = new SelectItem(
在 ContextMenu shell 扩展中创建文件后,如何在资源管理器中选择它? 我使用 IFileOperation 创建了文件API,并尝试使用 IShellView::SelectItem(
试图将所有演示 Material 保留在该项目的 xhtml 中,我需要将 selectItem 标记中的某些值格式化为具有 BigDecimal 值,并且需要使其看起来像货币。有没有办法申请在 里
我是一名优秀的程序员,十分优秀!