Java 如果我像这样调用它,则为空:value=“#{reportConfiguratorBean.dualListVars}”如果我尝试删除immediate=“true”,那么如果我调用“#{reportConfiguratorBean.readMyAssoc
Java 如果我像这样调用它,则为空:value=“#{reportConfiguratorBean.dualListVars}”如果我尝试删除immediate=“true”,那么如果我调用“#{reportConfiguratorBean.readMyAssoc,java,jsf,primefaces,Java,Jsf,Primefaces,如果我像这样调用它,则为空:value=“#{reportConfiguratorBean.dualListVars}”如果我尝试删除immediate=“true”,那么如果我调用“#{reportConfiguratorBean.readMyAssocImTypVariables}”,则我的整个portlet都会关闭。我日志中只有以下消息:org.apache.catalina.core.ApplicationDispatcher invoke:Servlet.service()对于serv
如果我像这样调用它,则为空:value=“#{reportConfiguratorBean.dualListVars}”如果我尝试删除immediate=“true”,那么如果我调用“#{reportConfiguratorBean.readMyAssocImTypVariables}”,则我的整个portlet都会关闭。我日志中只有以下消息:org.apache.catalina.core.ApplicationDispatcher invoke:Servlet.service()对于servlet ImageViewer,servlet抛出异常javax.portlet.faces.BridgeException:javax.faces.FacesException:javax.el.PropertyNotWritableException:/views/report-configurator.xhtml@269,45 value=“#{reportConfiguratorBean.getAssocImTypVariables()”:集合操作的语法非法——这些消息与picklist值相关#{reportConfiguratorBean.getAssocImTypVariables()}”方法,但该方法仍然有效!我已更新了我的初始帖子并添加了getAssocImTypVariables()对于
PropertyNotWritableException
:您的reportConfiguratorBean
上是否有属性assocImTypVariables
?您不需要显式调用get
和set
方法。只需编写值=“#{reportConfiguratorBean.assocImTypVariables}”
。很难理解代码中的所有内容。你应该试着将问题剥离出来,也许可以为这一个问题创建一个小示例。这将有助于你自己跟踪问题,也使stackoverflow上的每个人都更容易跟踪问题并帮助你。这个示例是如何回答的?正在运行的选择列表e也可以在上找到示例。尝试回答问题。
<p:pickList id="pickList" value="#{reportConfiguratorBean.dualListVars}" var="cRVariable" itemValue="#{cRVariable}" itemLabel="#{cRVariable.varName}" converter="#{cRImageTypeConverter}" immediate="true" rendered="true" >
<f:facet name="sourceCaption">Available Variables</f:facet>
<f:facet name="targetCaption">Associated Variables</f:facet>
</p:pickList>
<f:facet name="footer">
<p:commandButton id='varassociate' action="#{reportConfiguratorBean.setAssocImTypVariables()}" value='Associate' process="@this,pickList" />
</f:facet>
public void setAssocImTypVariables() {
System.out.println(">>>>>>>>>>>>>>> entered");
List<CRVariable> sourceVariables = this.dualListVars.getSource();
List<CRVariable> targetVariables = this.dualListVars.getTarget();
System.out.println(dualListVars.getSource());
System.out.println(dualListVars.getTarget());
for (CRVariable sourceVariable:sourceVariables) {
System.out.println(">>>>>>>>>>>>> I am a source variable: " + sourceVariable.getVarName());
}
for (CRVariable targetVariable:targetVariables) {
System.out.println(">>>>>>>>>>>>> I am a target variable: " + targetVariable.getVarName());
}
}
public void getAssocImTypesOnLoad() {
Long imTypeId = Long.parseLong(virtualId);
List<CRVariable> source;
List<CRVariable> target;
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try
{
tx = session.beginTransaction();
String hq3 = "select distinct v from CRVariable v join v.crimagetypes t where t.id in (:itid)";
Query query3 = session.createQuery(hq3);
query3.setParameter("itid",imTypeId);
target = query3.list();
String hq4 = "select v FROM CRVariable v WHERE v.id not in (" +
"select distinct v1.id " +
"from CRVariable v1 " +
"join v1.crimagetypes t2 " +
"where t2.id in (:itid))";
Query query4 = session.createQuery(hq4);
query4.setParameter("itid",imTypeId);
source = query4.list();
dualListVars = new DualListModel<CRVariable>(source, target);
tx.commit();
}
catch (Exception e)
{
if (tx != null)
{
e.printStackTrace();
}
}
finally
{
session.close();
}
}
<p:pickList id="pickList" value="#{reportConfiguratorBean.dualListVars}" var="cRVariable" itemValue="#{cRVariable}" itemLabel="#{cRVariable.varName}" converter="#{cRImageTypeConverter}" immediate="true" rendered="true" >
<f:facet name="sourceCaption">Available Variables</f:facet>
<f:facet name="targetCaption">Associated Variables</f:facet>
</p:pickList>
<p:commandButton id='varassociate' action="#{reportConfiguratorBean.readMyAssocImTypVariables}" value='Associate' ajax='false' process="@this,pickList" immediate="true" />
public void readMyAssocImTypVariables() {
List<CRVariable> sourceVariables = this.dualListVars.getSource();
List<CRVariable> targetVariables = this.dualListVars.getTarget();
for (CRVariable sourceVariable:sourceVariables) {
System.out.println(">>>>>>>>>>>>> I am a source variable: " + sourceVariable.getVarName());
}
for (CRVariable targetVariable:targetVariables) {
System.out.println(">>>>>>>>>>>>> I am a target variable: " + targetVariable.getVarName());
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head></h:head>
<h:body>
<h:form>
<h3>Basic PickList</h3>
<p:pickList value="#{pickListBean.cities}" var="city"
itemLabel="#{city}" itemValue="#{city}" />
<p:commandButton value="Submit" action="#{pickListBean.displayList}" />
</h:form>
</h:body>
</html>
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import org.primefaces.model.DualListModel;
@ManagedBean
public class PickListBean {
private DualListModel<String> cities;
public PickListBean() {
//Cities
List<String> citiesSource = new ArrayList<String>();
List<String> citiesTarget = new ArrayList<String>();
citiesSource.add("Istanbul");
citiesSource.add("Ankara");
citiesSource.add("Izmir");
citiesSource.add("Antalya");
citiesSource.add("Bursa");
// citiesTarget.add("T1");
cities = new DualListModel<String>(citiesSource, citiesTarget);
}
public DualListModel<String> getCities() {
return cities;
}
public void setCities(DualListModel<String> cities) {
this.cities = cities;
}
public void displayList(){
System.out.println("values in list are" +cities.getTarget());
}
}