gpt4 book ai didi

java - JSF, writeAttribute ("value", str, null) 通过 ValueExpression.getValue() 获得的字符串失败

转载 作者:行者123 更新时间:2023-11-30 12:00:48 26 4
gpt4 key购买 nike

我在使用自定义 JSF 组件时遇到了一个有点奇怪的问题。

这是我的渲染器代码:

public class Test extends Renderer {

public void encodeBegin(final FacesContext context,
final UIComponent component) throws IOException {

ResponseWriter writer = context.getResponseWriter();

writer.startElement("textarea", component);

String clientId = component.getClientId(context);
if (clientId != null)
writer.writeAttribute("name", clientId, null);

ValueExpression exp = component.getValueExpression("value");
if (exp != null && exp.getValue(context.getELContext()) != null) {
String val = (String) exp.getValue(context.getELContext());
System.out.println("Value: " + val);
writer.writeAttribute("value", val, null);
}

writer.endElement("textarea");
writer.flush();
}
}

代码生成:

<textarea name="j_id2:j_id12:j_id19" value=""></textarea>

属性绑定(bind)包含“test”,并且应该是“Value: test”已成功打印到控制台。

现在,如果我将代码更改为:

public void encodeBegin(final FacesContext context,
final UIComponent component) throws IOException {

ResponseWriter writer = context.getResponseWriter();

writer.startElement("textarea", component);

String clientId = component.getClientId(context);
if (clientId != null)
writer.writeAttribute("name", clientId, null);

ValueExpression exp = component.getValueExpression("value");
if (exp != null && exp.getValue(context.getELContext()) != null) {
String val = (String) exp.getValue(context.getELContext());
String str = "new string";
System.out.println("Value1: " + val + ", Value2: " + str);
writer.writeAttribute("value", str, null);
}

writer.endElement("textarea");
writer.flush();
}

生成的 html 是:

<textarea name="j_id2:j_id12:j_id19" value="new string"></textarea>

控制台输出为“Value1: test, Value2: new string”

这是怎么回事?这没有意义。为什么 writeAttribute 会区分这两个字符串?

附加信息:

  • 该组件扩展了 UIComponentBase
  • 我将它与 facelets 一起使用

最佳答案

HTML textarea元素没有“值”属性。实际上,元素的主体就是值。你应该结束

<textarea name="j_id2:j_id12:j_id19">new string</textarea>

查看原始 JSF TextAreaRenderer 源代码以获得更多提示。

关于java - JSF, writeAttribute ("value", str, null) 通过 ValueExpression.getValue() 获得的字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1512898/

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