使用时遇到问题关于 JSF 2.0

发布于 2024-10-31 12:52:00 字数 1343 浏览 0 评论 0原文

上周我在这里发布了一个关于在 J2EE 中使用 Ajax 的问题,并得到了有关使用 JSF 2.0 支持 ajax 的构建的答案。不幸的是,我似乎无法让任何例子发挥作用!

我尝试过在不同的服务器上使用不同的 IDE,但我无法让这个基本示例正常工作。

会话范围的托管 bean:

public class testBean 
{
    private String name;

    public testBean() {}


    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

和 xhtml 页面:

<!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
<head>
  <title>Default title</title>
</head>

    <body>

        <h:form id="testForm"> 

            <h:inputText id="test" value="#{testBean.name}" > 
                <f:ajax event="keyup" render="testForm:name" execute="testForm:test"/> 
            </h:inputText> 


            <h:outputText id="name" value="#{testBean.name}" /> 
        </h:form>   

    </body>

</html>

据我所知,该页面应该显示在 inputText 表单旁边写入时所写入的文本,但这并没有发生。

我讨厌制作两个关于大致相同的事情的主题,但我真的不知道这里出了什么问题,从我读过的内容来看,这段代码应该可以工作。

I posted a question here last week about using Ajax with J2EE and got and answer about the build in support of ajax with JSF 2.0. Unfortunately I just cant seem to get any example of this to work!

I have tried out using different IDEs with different servers but I cant get this basic example to work.

A session scoped managed bean:

public class testBean 
{
    private String name;

    public testBean() {}


    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

And the xhtml page:

<!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
<head>
  <title>Default title</title>
</head>

    <body>

        <h:form id="testForm"> 

            <h:inputText id="test" value="#{testBean.name}" > 
                <f:ajax event="keyup" render="testForm:name" execute="testForm:test"/> 
            </h:inputText> 


            <h:outputText id="name" value="#{testBean.name}" /> 
        </h:form>   

    </body>

</html>

From my knowledge the page should display the text that is written while it is being written right next to the inputText form, but that is not happening.

I hate making two topics about roughly the same thing but I really dont know whats wrong here, from what Ive read this code should work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

二货你真萌 2024-11-07 12:52:00

您在 f:ajax 中指定了错误的事件。使用 keyupkeypress 而不是 click

<h:inputText id="test" value="#{testBean.name}" > 
  <f:ajax event="keyup" render="name" execute="test"/> 
</h:inputText>

onclick / click 事件处理程序仅由鼠标单击触发。

更新:

之前没有注意到:

我认为你应该使用 而不是 来包含所有内容正确使用 ajax 的 javascript 资源。

You have the wrong event specified in your f:ajax. Use keyup or keypress instead of click:

<h:inputText id="test" value="#{testBean.name}" > 
  <f:ajax event="keyup" render="name" execute="test"/> 
</h:inputText>

the onclick / click event handler is only fired by a mouse click.

UPDATE:

Didn't notice it before:

I think you should use <h:head> instead of <head> to include all javascript resources for ajax correctly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文