gpt4 book ai didi

java - 将 JSF inputText 与支持 bean 的字段链接而不显示其值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:26 24 4
gpt4 key购买 nike

我有这样的支持 bean:

@ManagedBean
@SessionScoped
public class TestBean {

private String testString;

public String getTestString() {
return testString;
}

public void setTestString(String testString) {
this.testString = testString;
}
}

我的 xhtml 页面也非常简单:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
>

<h:head></h:head>

<h:body>

<h:form>
<h:inputText value="#{testBean.testString}"/>
<h:commandButton action="#{testController.testAction}"/>
</h:form>

</h:body>

</html>

我想要的一切 - 渲染我的 h:inputText 元素没有值(空)。
我是 JSF 的新手,所以,你能帮帮我吗?
最诚挚的问候!

更新!
这是简化的代码,我在其他地方使用 testString 并且 testString 具有值(value),我想隐藏它!我想保留这个值(value)。

最佳答案

前提是它真的是一个request/view scoped bean,你可能是浏览器内置自动完成/自动填充功能的受害者。您可以通过向相关输入组件添加 autocomplete="off" 来关闭它。

<h:inputText ... autocomplete="off" />

再次注意,填充输入的不是 JSF,而是网络浏览器本身。清除浏览器缓存,你会发现浏览器不会再这样做了。根据浏览器品牌/版本,您还可以将其重新配置为不那么急切地自动完成。


更新:根据您的问题更新,您的 bean 结果是 session 范围的。这不是基于请求/ View 的表单的正常范围。 session 范围的 bean 实例在同一 HTTP session 中的所有浏览器窗口/选项卡(读取:所有请求/ View )之间共享。您通常只在 session 中存储登录用户及其首选项(语言等)。只有当您关闭并重新启动整个浏览器,或使用不同的浏览器/机器时,您才会获得一个全新的实例。

将其更改为请求或 View 范围。在这个特别简单的示例中,请求范围应该足够了:

@ManagedBean
@RequestScoped

另见:


更新 2 基于评论,

Oh, you right, it's better for me to use @RequestScoped. But it doesn't resolve my problem - I want to keep this value, but I don;t want to show it in textInput. This value is important in context of request-response cycle.

现在具体的功能需求更加清晰了(以后的问题,请注意准备问题,我不知道你一开始是这样问的)。在这种情况下,使用具有 2 个属性的 View 范围 bean:

@ManagedBean
@ViewScoped
public class TestBean {

private String testString;
private String savedTestString;

public void testAction() {
savedTestString = testString;
testString = null;
}

// ...
}

例如,您也可以将其存储在数据库中或实际上又位于 session 范围内的注入(inject)托管 bean 的属性中。

关于java - 将 JSF inputText 与支持 bean 的字段链接而不显示其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400820/

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