java - loadbundle - read properties file jsf
javax.el.PropertyNotWritableException:/index.xhtml @ 29,118 value="": sintaxis ilegal para la operaciĆ³n de conjunto (1)
Lea atentamente el mensaje de excepción. La respuesta es directa allí.
javax.el.PropertyNotWritableException: /index.xhtml @ 29,118 value = "": sintaxis ilegal para la operación de conjunto
En la línea 29, el carácter 118 de /index.xhtml
un value=""
. Esta no es una sintaxis válida para una expresión de valor EL que debería poder escribirse a través de un método setter.
Normalmente, especifica el atributo de valor como tan value="#{bean.property}"
donde el bean tiene un getProperty()
y un método setProperty()
conforman la especificación javabeans.
Es probable que este:
<h:inputText styleClass="form-login" title="Username" value="" size="30" maxlength="2048" />
No estoy seguro de por qué especificó el valor así. Esto es completamente incorrecto. Deberías eliminarlo por completo
<h:inputText styleClass="form-login" title="Username" size="30" maxlength="2048" />
o vincularlo a una propiedad de frijol válida
<h:inputText styleClass="form-login" title="Username" value="#{someBean.userName}" size="30" maxlength="2048" />
Tenga en cuenta que este problema no tiene nada que ver con cambiar la configuración regional de JSF.
Sin relación con el problema concreto, las formas de anidación son ilegales en HTML y, por lo tanto, también en JSF. Debe dividir la selección de idioma y el inicio de sesión de usuario en 2 formularios separados. No desea enviar los datos de inicio de sesión cuando cambie el idioma. Además, puede encontrar las sugerencias en esta respuesta útiles sobre cómo cambiar correctamente la configuración regional de JSF: localización en JSF, cómo recordar la configuración regional seleccionada por sesión en lugar de por solicitud / vista
Quiero crear una pantalla de inicio de sesión con la opción de localización para traducir el nombre y cuando cambio del inglés predeterminado al árabe se cuelga
aquí está el faces.config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>ar</supported-locale>
</locale-config>
<resource-bundle>
<base-name>mypack.enar</base-name>
<var>msg</var>
</resource-bundle>
</application>
</faces-config>
ManagedBean
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
/**
*
* @author body
*/
@ManagedBean(name = "localize")
@RequestScoped
public class LocalizeMBean implements Serializable {
/**
* @return the countries
*/
public static Map<String, Object> getCountries() {
return countries;
}
/**
* @param aCountries the countries to set
*/
public static void setCountries(Map<String, Object> aCountries) {
countries = aCountries;
}
private String localeCode;
/**
* Creates a new instance of LocalizeMBean
*/
public void setLocaleCode(String localeCode) {
this.localeCode = localeCode;
}
public Map<String, Object> getCountriesInMap() {
return getCountries();
}
public String getLocaleCode() {
return localeCode;
}
private static Map<String, Object> countries;
static {
setCountries(new LinkedHashMap<String, Object>());
getCountries().put("English", Locale.ENGLISH); //label, value
getCountries().put("Arabic", Locale.UNICODE_LOCALE_EXTENSION);
}
public void countryLocaleCodeChanged(ValueChangeEvent e) {
String newLocaleValue = e.getNewValue().toString();
//loop country map to compare the locale code
for (Map.Entry<String, Object> entry : getCountries().entrySet()) {
if (entry.getValue().toString().equals(newLocaleValue)) {
FacesContext.getCurrentInstance()
.getViewRoot().setLocale((Locale) entry.getValue());
}
}
}
}
Página JSF
<h:head>
<title>My Login Page</title>
<h:outputStylesheet library="mycss" name="login-box.css"/>
</h:head>
<h:body>
<h:form>
<div style="padding: 100px 0 0 250px;">
<div id="login-box">
<H2>Login</H2>
My Login Screen
<br />
<h:selectOneMenu value="#{localize.localeCode}" onchange="submit();"
valueChangeListener="#{localize.countryLocaleCodeChanged}">
<f:selectItems value="#{localize.countriesInMap}" />
</h:selectOneMenu>
<br />
<div id="login-box-name" style="margin-top:20px;">
<h:outputLabel value="#{msg.namee}" />
</div>
<div id="login-box-field" style="margin-top:20px;">
<h:inputText styleClass="form-login" title="Username" value="" size="30" maxlength="2048" />
</div>
<div id="login-box-name">Password:</div><div id="login-box-field"><h:inputSecret styleClass="form-login" title="Password" value="" size="30" maxlength="2048" /></div>
<br />
<div class="login-box-options"><h:selectBooleanCheckbox value="1"/>Remember me<h:commandLink style="margin-left:30px;" value="Forget Password"/></div>
<br />
<br />
<h:commandButton styleClass="button"/>
</div>
</div>
</h:form>
</h:body>
</html>
La excepción cuando cambio en el cuadro combinado
javax.faces.component.UpdateModelException: javax.el.PropertyNotWritableException: /index.xhtml @29,118 value="": Illegal Syntax for Set Operation
at javax.faces.component.UIInput.updateModel(UIInput.java:853)
at javax.faces.component.UIInput.processUpdates(UIInput.java:735)
at javax.faces.component.UIForm.processUpdates(UIForm.java:281)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1231)
at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: javax.el.PropertyNotWritableException: /index.xhtml @29,118 value="": Illegal Syntax for Set Operation
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136)
at javax.faces.component.UIInput.updateModel(UIInput.java:818)
... 38 more