У меня есть страница, на которой я использую час: ссылка какОблицовочные ошибка при получении значения из URL (javax.el.PropertyNotWritableException :)
<h:link outcome="countryPages_View.xhtml">
<img src="images/afghanistan.png" style="border: none;"/>
<f:param name="SaarcCountryId" value="11" />
<f:param name="once" value="true" />
<f:param name="fromPage" value="homePage" />
</h:link>
<h:link outcome="countryPages_View.xhtml">
<h:graphicImage url="images/bangladesh.png" style="margin-left:10px;border: none" />
<f:param name="SaarcCountryId" value="5" />
<f:param name="once" value="true" />
<f:param name="fromPage" value="homePage" />
</h:link>
Когда я нажимаю на изображении, а затем URL становится нормально. URL становится как этого
http://localhost:8080/WIT/faces/countryPages_View.xhtml?SaarcCountryId=1&once=true&fromPage=homePage
Тогда на моей странице я получаю значение, как этого
<ui:composition template="./WEB-INF/templates/layout.xhtml">
<ui:define name="title">SAARC Country View</ui:define>
<ui:define name="content">
<f:metadata>
<f:viewParam name="SaarcCountryId" value="#{countryPages_Setup.cntryid}" />
<f:viewParam name="once" value="#{countryPages_Setup.onse}" />
<f:viewParam name="fromPage" value="#{countryPages_Setup.page}}" />
<f:event type="preRenderView" listener="#{countryPages_Setup.beforeRenderPage}" />
</f:metadata>
<h:form id="countryPages" prependId="false">
....
</h:form>
</ui:define>
</ui:composition>
Моего боб как этого
@ManagedBean
@ViewScoped
public class CountryPages_Setup implements Serializable {
private String cntryid;
private String page;
private String onse;
public void beforeRenderPage(ComponentSystemEvent event) {
System.out.println(page);
System.out.println(onse);
System.out.println(cntryid);
} //end of beforeRenderPage()
//Constructor
public CountryPages_Setup() {
} //end of constructor
// getter and setter
public String getCntryid() {
return cntryid;
}
public void setCntryid(String cntryid) {
this.cntryid = cntryid;
}
public String getOnse() {
return onse;
}
public void setOnse(String onse) {
this.onse = onse;
}
...
} //end of class CountryPages_Setup
Когда мои загрузки страницы я получаю сообщение об ошибке.
exception
javax.servlet.ServletException: javax.el.PropertyNotWritableException: /countryPages_View.xhtml @20,88 value="#{countryPages_Setup.page}}": Illegal Syntax for Set Operation
root cause
javax.faces.component.UpdateModelException: javax.el.PropertyNotWritableException: /countryPages_View.xhtml @20,88 value="#{countryPages_Setup.page}}": Illegal Syntax for Set Operation
root cause
javax.el.PropertyNotWritableException: /countryPages_View.xhtml @20,88 value="#{countryPages_Setup.page}}": Illegal Syntax for Set Operation
Почему я получаю эту ошибку? Я сделал сеттер и геттер для своих параметров взгляда? Также когда страница загружается, сначала вызывайте мой конструктор. Я хочу использовать эти значения f: param в моем конструкторе. Я думаю, что после конструктора вызовет мой метод beforeRenderPage(). Как я могу получить эти значения в конструкторе, чтобы я мог использовать его в моем конструкторе?
Благодаря
вы генерироваться геттер/сеттер для вашей переменной страницы? – Daniel
Да, я не публиковал, но, конечно, я сгенерировал его 'public void setPage (String page) { this.page = page; } '. Getter также есть ... – Basit
Скажите мне одну вещь. Когда моя страница загружается и мой вызов конструктора, я делаю что-то вроде этого в начале моего конструктора 'page =" "; -> if (page.equalsIgnoreCase ("CountryPages_Detail")) {..} else {...} '. может ли это быть проблемой? Я хочу сказать, что я установил значение, когда вызвал мой конструктор, а затем снова попытаюсь установить значения через f: viewparam. Просто догадаться, может быть, я ошибаюсь :) – Basit