gpt4 book ai didi

jsf - JSF h :outputText value 中的修剪字符串

转载 作者:行者123 更新时间:2023-12-04 14:18:03 25 4
gpt4 key购买 nike

有没有办法将 JSF h:outPutTextValue 字符串化?我的字符串是 A-B-A03,我只想显示最后 3 个字符。openfaces 有任何可用的功能吗?

谢谢

最佳答案

您可以使用 Converter 对于这份工作。 JSF 有几个内置转换器,但没有一个适合这种非常具体的功能要求,因此您需要创建一个自定义的转换器。

比较简单,实现Converter根据其契约(Contract)的接口(interface):

public class MyConverter implements Converter {

@Override
public String getAsString(FacesContext context, UIComponent component, Object modelValue) throws ConverterException {
// Write code here which converts the model value to display value.
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) throws ConverterException {
// Write code here which converts the submitted value to model value.
// This method won't be used in h:outputText, but in UIInput components only.
}

}

如果您使用的是 JSF 2.0(您的问题历史证实了这一点),您可以使用 @FacesConverter注释以注册转换器。您可以使用(默认) value属性为其分配转换器 ID:
@FacesConverter("somethingConverter")

(其中“某物”应代表您尝试转换的模型值的特定名称,例如“邮政编码”或其他名称)

以便您可以按如下方式引用它:
<h:outputText value="#{bean.something}" converter="somethingConverter" />

对于您的特定功能要求,转换器实现可能如下所示(假设您实际上想要拆分 - 并仅返回最后一部分,这比“显示最后 3 个字符”更有意义):
@FacesConverter("somethingConverter")
public class SomethingConverter implements Converter {

@Override
public String getAsString(FacesContext context, UIComponent component, Object modelValue) throws ConverterException {
if (!(modelValue instanceof String)) {
return modelValue; // Or throw ConverterException, your choice.
}

String[] parts = ((String) modelValue).split("\\-");
return parts[parts.length - 1];
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) throws ConverterException {
throw new UnsupportedOperationException("Not implemented");
}

}

关于jsf - JSF h :outputText value 中的修剪字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157969/

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