在这个问题上提供一些帮助将不胜感激。
我有几个JSF页面,但其中一个是子类别,其中有一个SelectOneMenu用于选择类别,但当我尝试编辑子类别时,这个SelectOneMenu总是显示第一个值,并且没有被预选。
我怎么解决这个问题。我读了很多SO帖子,尽管我已经实施了一些建议,但我还没有实现。例如,a@BalusC的一个:
primefaces selectOneMenu在应该的时候不工作
这里是视图
<h:outputText value="Subcategory ID : #{subcategoryController.subcategory.subcategoryId}"/>
<p:selectOneMenu id="cboCategoryDialog" converter="subcategoryConverter"
value="#{subcategoryController.category.categoryId}"
style="width: 100%"
<f:selectItems value="#{subcategoryController.categoryList}"
var="subcat"
itemLabel="#{subcat.categoryName}"
itemValue="#{subcat.categoryId}"/>
</p:selectOneMenu>**
这是子类别实体:
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "subcategory_id")
private Integer subcategoryId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "subcategory_name")
private String subcategoryName;
@JoinColumn(name = "category_id", referencedColumnName = "category_id")
@OneToOne(optional = false;
private Category categoryId;
//Getters and Setters Methods
@Override
public int hashCode() {
return (subcategoryId != null)
? (this.getClass().hashCode() + subcategoryId.hashCode())
: super.hashCode();
}
@Override
public boolean equals(Object obj) {
return (obj instanceof Subcategory) && (subcategoryId != null)
? subcategoryId.equals(((Subcategory) obj).subcategoryId)
: (obj == this);
}
子分类转换器
@RequestScoped
@FacesConverter("subcategoryConverter")
public class SubcategoryConverter implements Converter {
@EJB
private SubcategoryFacadeLocal EJBsubcategory;
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Subcategory) || ((Subcategory) value).getSubcategoryId() == null) {
return null;
}
return String.valueOf(((Subcategory) value).getSubcategoryId());
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null || !value.matches("\\d+")) {
return null;
}
Subcategory subcategory = EJBsubcategory.find(Integer.valueOf(value));
if (subcategory == null) {
throw new ConverterException(new FacesMessage("Unknown operation ID: " + value));
}
return subcategory;
}
}
下图显示了当我试图编辑任何项目时的对话框,它总是显示计算机,因为它是第一个itm。
查看显示问题的图像
我一直在阅读一些与此相关的有用问题,但我一直无法解决它。
提前感谢,
确保实体hashCode()和equals()方法已实现,并且不会尝试访问可为null的字段。这对我有用!
在查看代码后,我意识到我在JSF中使用了错误的实体。:
例如:
在问题中,我发布了:sub分类Controller.category.categoryId以将类别对象保存在子类别对象中。
具体如下:
<p:selectOneMenu id="cboCategoryDialog" converter="subcategoryConverter"
value="#{subcategoryController.category.categoryId}"
但是,正确的方法如下:
<p:selectOneMenu id="cboCategoryDialog" converter="omnifaces.SelectItemsConverter"
value="#{subcategoryController.subcategory.categoryId}"
现在,该组件正“指向”正确的对象。
我面临的另一个问题是:
因为我有嵌套的实体,例如:实体。实体在使用它之前,他们应该在每一个层次上被非专业化。
一些帖子真的,真的,真的帮助了我:
关于解决嵌套实体问题(Property tyNotFoundException)。
识别和解决javax.el.属性NotFoundException:目标不可达
在SelectOneMenu上使用普通和OmniFaces转换器:
http://balusc.omnifaces.org/2007/09/objects-in-hselectonemenu.html
问题内容: 下面是我的代码。 Calendar.HOUR应该给我 public static final int HOUR get和set的字段号,指示上午或下午的时间。HOUR用于12小时制(0-11)。中午和午夜用0而不是12表示。例如,在10:04:15.250 PM,小时是10。 不管我运行该代码多少次,它总是给我相同的unique_id。(101213),而我在计算机上的本地时间是下午1
问题内容: 我了解都和工作。我想知道是否有什么可以做的? 即可以使用以下模式替换: 我想问的是,我想让Python OO的这一方面更适合我。 问题答案: guido帖子中的一个可能答案(感谢@ fraca7): 例如,在pickle模块中,用于反序列化对象时创建实例。在这种情况下,将创建实例,但不会调用该方法。 还有其他类似的答案吗? 我接受这个答案是对我自己的问题的“是”: 我想知道是否有什么可
问题就在这里:我创建了世界上最简单的RecyclerView,但它只显示第一个项目。我不明白为什么。谢谢你的帮助。 item_layout.xml mainactivity.java
我有一个自定义文本字段,但如图所示,底部文本字段看起来如此模糊和空,我想保持提示显示,即使字段不集中,我如何在颤振中实现这一点? 这里是我的小部件代码:
问题内容: 我有一个全州所有城市的selectOneMenu。我已经编写了一个SQL将资金放在首位,但是我想将其加粗以使使用它的人更容易理解。有没有办法加粗它或做其他事情以使第二个选项更可见? 问题答案: 由生成的HTML 元素只允许很少的细粒度样式,而CSS支持则取决于浏览器。您 可以 使用CSS3 伪选择器。例如 与 但这并不适用于所有浏览器。只有Firefox会吃,而MSIE和Chrome不
我对primefaces ajax调用侦听器有问题。(primefaces 4.0、JSF 2.0、JBoss 6.1.1) 这是我定义的SelectOne菜单: 这是我的managedBean的主要部分 当我打开页面时,日志告诉我init方法已被执行,selectOneMenus已正确填充,因此我假设托管bean正在工作。如果我更改了我在上面写的selectOneMenu,我想修改的select