Jsf 2 如何在JSF页面的h:inpurthidden或其他方式中设置默认值
对不起我的英语。如何在JSF页面或其他方式中设置h:inputHidden中的默认值 我需要设置:Jsf 2 如何在JSF页面的h:inpurthidden或其他方式中设置默认值,jsf-2,Jsf 2,对不起我的英语。如何在JSF页面或其他方式中设置h:inputHidden中的默认值 我需要设置: #{orderBean.instance.task} = #{taskBean.instance} 要在OrderBean中进行设置,它不适合,我将CRUD用于bean。我想在JSF页面中设置 ==更新== BaseCrudBean对于OrderBean和TaskBean: abstract class BaseCrudBean<Id extends Serializable, Entit
#{orderBean.instance.task} = #{taskBean.instance}
要在OrderBean
中进行设置,它不适合,我将CRUD用于bean。我想在JSF页面中设置
==更新==
BaseCrudBean
对于OrderBean
和TaskBean
:
abstract class BaseCrudBean<Id extends Serializable, Entity extends com.otv.model.entity.Entity, DAO extends CrudDAO> implements CrudBean {
private static final long serialVersionUID = 1L;
private static final String SUCCESS = "success";
private static final String ERROR = "error";
@ManagedProperty(value="#{param.id}")
public Long id;
List<Entity> entityList;
Entity instance;
private Class<Entity> entityType;
@SuppressWarnings ("unchecked")
BaseCrudBean(){
ParameterizedType genericSuperclass = (ParameterizedType) getClass()
.getGenericSuperclass();
entityType = (Class<Entity>) genericSuperclass.getActualTypeArguments()[1];
}
public List<Entity> getEntityList() {
if(entityList == null){
entityList=getDao().findAll();
}
return entityList;
}
public String delete(Entity task) {
getDao().delete(task);
return SUCCESS;
}
public String update() {
getDao().update(getInstance());
return SUCCESS;
}
public String save() {
if (isManaged()) {
getDao().update(getInstance());
} else {
getDao().save(getInstance());
}
return SUCCESS;
}
public boolean isManaged() {
return getInstance().getId() != null;
}
public Entity getInstance() {
if (instance == null) {
if (id != null) {
instance = loadInstance();
} else {
instance = createInstance();
}
}
return instance;
}
public Entity loadInstance() {
return (Entity) getDao().findOne(getId());
}
public Entity createInstance() {
try {
return entityType.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
abstract DAO getDao();
abstract void setDao(DAO bo);
}
public class OrderBean extends BasePagingBean<Long, Order, OrderDAO> implements Serializable {
private static final long serialVersionUID = 1L;
private static final String SUCCESS = "success";
private static final String ERROR = "error";
@ManagedProperty(value="#{OrderDAO}")
OrderDAO dao;
public OrderDAO getDao() {
return this.dao;
}
public void setDao(OrderDAO dao){
this.dao = dao;
}
}
==更新2==
我需要一种h:selectOneMenu(我正在使用转换器):
你需要提供更多的信息。你能提供JSF页面和支持bean的详细信息吗?我在主要帖子中添加了
BaseCrudBean
和OrderBean
。我正在使用hibernate。现在我们需要看看JSF页面中正在做什么。你能说出你在JSF页面上写的东西的片段吗?从外观上看,您可能希望使用,当用户单击按钮/链接时,它将满足您的要求。Tagf:setPropertyActionListener
这是一个很好的解决方案,但它对我不起作用。我在主帖子部分添加==更新2==。
<h:selectOneMenu value="#{orderBean.instance.task}" class="form-control" id="taskList" converter="#{taskConverterBean}">
<f:selectItems value="#{taskBean.entityList}" var="task"
itemLabel="#{task.id}" itemValue="#{task}"/>
</h:selectOneMenu>
<h:commandLink action="#{orderBean.save}" value="Add">
<f:setPropertyActionListener value="#{taskBean.instance}" target="#{orderBean.instance.task}" />
</h:commandLink>
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.demo.model.entity.Task