gpt4 book ai didi

java -
转载 作者:行者123 更新时间:2023-11-30 07:24:49 24 4
gpt4 key购买 nike

我正在我的所有 session 类上实现 Serializable,这样我就可以使用负载均衡器创建一些农场集群。

我已经控制了集群并且运行良好。但是,我收到一个似乎无法解决的错误。

每当我在 index.jsp 上输入时,我都会收到此错误:

Mensaje: javax.servlet.ServletException: java.lang.Exception: javax.faces.FacesException: Problem in renderResponse: /WEB-INF/inc-content/content.jspx @5,73 <f:loadBundle basename="#{idioma.messageBundleSinProp}"> /WEB-INF/inc-content/content.jspx @5,73 basename="#{idioma.messageBundleSinProp}" setAttribute: Atributo no serializable 
Tipo Error: class javax.servlet.ServletException
Excepcion: javax.servlet.ServletException: java.lang.Exception: javax.faces.FacesException: Problem in renderResponse: /WEB-INF/inc-content/content.jspx @5,73 <f:loadBundle basename="#{idioma.messageBundleSinProp}"> /WEB-INF/inc-content/content.jspx @5,73 basename="#{idioma.messageBundleSinProp}" setAttribute: Atributo no serializable
Codigo de Estado: 500
Nombre Servlet: jsp

尽管是西类牙语,但它基本上表示该属性不可序列化。似乎我遗漏了一些东西,因为 idioma.messageBundleSinProp 是一个 getter,而不是 setter:

public String getMessageBundle()
{
if(idiomaSeleccionado!=null)
return(webUtil.getPropertiesValue(idiomaSeleccionado, "LanguageChances.properties"));
else
return(webUtil.getPropertiesValue(idiomaSeleccionadoDefecto, "LanguageChances.properties"));
}

public String getMessageBundleSinProp()
{
//String propertieSeleccionado=getMessageBundle();
return(getMessageBundle().substring(0,getMessageBundle().indexOf(".")));
}

有什么问题吗?

最佳答案

实际上 loadBundle 组件是从 JSF 2.0 变成 transient 的。

Source Code JSF 1.2

Source Code JSF 2.0

因为您也没有使用 Icefaces 2.0。你也不能使用它。 ICEFACES JIRA

所以我能想到的唯一方法是创建您自己的 messageBean 并检索消息。

你可以这样做:

public class MessageBean implements Serializable
{

transient private static ResourceBundle bundle;
transient private static Map map;

protected static ClassLoader getCurrentClassLoader(Object defaultObject)
{
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader == null)
{
loader = defaultObject.getClass().getClassLoader();
}
return loader;
}

MessageBean()
{
bundle = ResourceBundle.getBundle("LanguageChances", java.util.Locale.getDefault(), getCurrentClassLoader(null));
map = new HashMap<String, Object>();
Enumeration<String> keys = bundle.getKeys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
Object value = bundle.getObject(key);
map.put(key, value);
}
}

public Map getMap(){
return map;
}
}

然后在您的页面上使用类似这样的东西来检索消息:

<c:forEach items="#{messageBean.map}" var="entry">
<h:outputText value="#{entry.key}"/>
</c:forEach>

关于java - <f :loadBundle basename Non-serializable attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11258541/

24 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com