将 MyFaces 1.2 迁移到 2.1 后链接突然停止反应

发布于 2025-01-07 16:08:19 字数 7192 浏览 0 评论 0原文

我最近将 Eclipse Indigo 项目从 JSF 1.2 切换到 JSF 2.1(使用 MyFaces)。使用 Tomcat 7。

奇怪的事情发生了:我建立了一个项目,并且在一段时间内运行良好 时间,然后突然(也许在我“清理”之后)停止工作,在某种意义上 单击命令链接不会产生任何操作,支持 bean 的方法不会产生任何操作 打电话过去,什么也没发生。我尝试过做项目“clean”和 Eclipse 重新启动,甚至重新启动系统,但没有帮助。唯一有帮助的是 我创建了一个全新的工作区和新项目 - 但同样的事情发生了: 这也只工作了很短的时间,然后突然以同样的方式停止工作 - 命令链接对点击没有反应,我无法调试 Java 代码至少可以定位问题。

这种奇怪行为的原因可能是什么?

提前致谢。


更新: 这是报告的 JavaScript 错误:

myfaces is not defined
onclick()onclick (line 2)
event = click clientX=840, clientY=252

return myfaces.oam.submitForm("j_id_6", "j_id_6:LOGIN");

function onclick(event) {
return myfaces.oam.submitForm("j_id_6", "j_id_6:LOGIN");
}

这是原始 XHTML 文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core" 
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:t="http://myfaces.apache.org/tomahawk">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Login</title>    
</h:head>
<body style="background-color:#3d3d3d;" text="#000000" link="#cc0000" alink="#666666" vlink="#cc0000" onload="document.forms[0].USERNAME.focus();">
<f:view>

<h:form target="_top">

    <table border="0" align="center" width="810" style="border: 2px black solid; background-image:url(images/header.jpg); margin:auto;" cellspacing="0" cellpadding="0">
        <tr>

        </tr>
    </table>
    <table align="center" width="810" style="border: 2px black solid; background-color:#ffffff;" cellspacing="0" cellpadding="0">
        <tr>
            <td width="100%" height="10" colspan="3" align="center" valign="middle">

            </td>
        </tr>
        <tr>
            <td colspan="3">
            <table width="778" align="center" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td valign="top" width="778"><h1>Login</h1>
                        <table cellpadding="0" cellspacing="0" border="0">
                              <tr>                                  
                                <td height="20"><font class="text">User Name: </font></td>
                                <td height="20"><font class="text"><t:inputText forceId="true" id="USERNAME" maxlength="50" value="#{LoginBean.username}" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20"><font class="text">Password: </font></td>
                                <td height="20"><font class="text"><h:inputSecret maxlength="30" value="#{LoginBean.password}" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20" colspan="2" align="right"><h:commandLink id="LOGIN" action="#{LoginBean.doLogin}"><h:graphicImage style="border: none" value="images/login.png" /></h:commandLink></td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
            </td>
        </tr>
    </table>

</h:form>    

</f:view>
</body>
</html>

这是生成的 HTML:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Login</title></head>
<body style="background-color:#3d3d3d;" text="#000000" link="#cc0000" alink="#666666" vlink="#cc0000" onload="document.forms[0].USERNAME.focus();"><form id="j_id2030916047_790d5181" name="j_id2030916047_790d5181" method="post" action="/EWC/login.faces" enctype="application/x-www-form-urlencoded" target="_top">

    <table border="0" align="center" width="810" style="border: 2px black solid; background-image:url(images/header.jpg); margin:auto;" cellspacing="0" cellpadding="0">
        <tr>

        </tr>
    </table>

    <table align="center" width="810" style="border: 2px black solid; background-color:#ffffff;" cellspacing="0" cellpadding="0">
        <tr>
            <td width="100%" height="10" colspan="3" align="center" valign="middle">

            </td>
        </tr>
        <tr>
            <td colspan="3">
            <table width="778" align="center" border="0" cellspacing="0" cellpadding="0">
                <tr>

                    <td valign="top" width="778"><h1>Login</h1>
                        <table cellpadding="0" cellspacing="0" border="0">
                            <tr>                                    
                                <td height="20"><font class="text">User Name: </font></td>
                                <td height="20"><font class="text"><input id="USERNAME" name="USERNAME" type="text" value="" maxlength="50" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20"><font class="text">Password: </font></td>

                                <td height="20"><font class="text"><input type="password" name="j_id2030916047_790d5181:j_id2030916047_790d51ba" maxlength="30" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20" colspan="2" align="right"><script type="text/javascript" src="/EWC/javax.faces.resource/oamSubmit.js.faces?ln=org.apache.myfaces"></script><a href="#" onclick="return myfaces.oam.submitForm('j_id2030916047_790d5181','j_id2030916047_790d5181:LOGIN');" id="j_id2030916047_790d5181:LOGIN"><img src="images/login.png" style="border: none" /></a></td>
                            </tr>
                        </table>
                    </td>
                </tr>

            </table>
            </td>
        </tr>
    </table><input type="hidden" name="j_id2030916047_790d5181_SUBMIT" value="1" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="5s3ZqoVcUIwarcQb6pVzFIPhMJIzbVHnjMrXdtgA1Nten7grU/y0hMGbHtFvIExuKQOwB3IGzcSDeuPfijYMcnK23q/2N1mduMdr6RskySGELSaI2w93nL9b8NE=" /></form>
</body>
</html>

I recently switched my Eclipse Indigo project from JSF 1.2 to JSF 2.1 (using MyFaces). Using Tomcat 7.

Strange thing happens: I set up a project, and it works fine for some short
time, and then suddenly (maybe after I do "clean") stops working in a sense that
clicking a command link does not produce any action, backing bean's method is not
called, just nothing happens. I have tried to do project "clean" and Eclipse
restart, and even system restart but it did not help. Only thing that helped is
that I created a brand new workspace, and new project - but same thing happened:
this too worked only for short time and suddenly stoped working in the same way
- command links are just not reacting to clicks, and there is no way I can debug Java
code to at least localize the problem.

What could be the reason for such a strange behaviour?

Thanks in advance.


Update: this is the JavaScript error reported:

myfaces is not defined
onclick()onclick (line 2)
event = click clientX=840, clientY=252

return myfaces.oam.submitForm("j_id_6", "j_id_6:LOGIN");

function onclick(event) {
return myfaces.oam.submitForm("j_id_6", "j_id_6:LOGIN");
}

Here is the original XHTML file:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core" 
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:t="http://myfaces.apache.org/tomahawk">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Login</title>    
</h:head>
<body style="background-color:#3d3d3d;" text="#000000" link="#cc0000" alink="#666666" vlink="#cc0000" onload="document.forms[0].USERNAME.focus();">
<f:view>

<h:form target="_top">

    <table border="0" align="center" width="810" style="border: 2px black solid; background-image:url(images/header.jpg); margin:auto;" cellspacing="0" cellpadding="0">
        <tr>

        </tr>
    </table>
    <table align="center" width="810" style="border: 2px black solid; background-color:#ffffff;" cellspacing="0" cellpadding="0">
        <tr>
            <td width="100%" height="10" colspan="3" align="center" valign="middle">

            </td>
        </tr>
        <tr>
            <td colspan="3">
            <table width="778" align="center" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td valign="top" width="778"><h1>Login</h1>
                        <table cellpadding="0" cellspacing="0" border="0">
                              <tr>                                  
                                <td height="20"><font class="text">User Name: </font></td>
                                <td height="20"><font class="text"><t:inputText forceId="true" id="USERNAME" maxlength="50" value="#{LoginBean.username}" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20"><font class="text">Password: </font></td>
                                <td height="20"><font class="text"><h:inputSecret maxlength="30" value="#{LoginBean.password}" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20" colspan="2" align="right"><h:commandLink id="LOGIN" action="#{LoginBean.doLogin}"><h:graphicImage style="border: none" value="images/login.png" /></h:commandLink></td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
            </td>
        </tr>
    </table>

</h:form>    

</f:view>
</body>
</html>

Here is the generated HTML:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Login</title></head>
<body style="background-color:#3d3d3d;" text="#000000" link="#cc0000" alink="#666666" vlink="#cc0000" onload="document.forms[0].USERNAME.focus();"><form id="j_id2030916047_790d5181" name="j_id2030916047_790d5181" method="post" action="/EWC/login.faces" enctype="application/x-www-form-urlencoded" target="_top">

    <table border="0" align="center" width="810" style="border: 2px black solid; background-image:url(images/header.jpg); margin:auto;" cellspacing="0" cellpadding="0">
        <tr>

        </tr>
    </table>

    <table align="center" width="810" style="border: 2px black solid; background-color:#ffffff;" cellspacing="0" cellpadding="0">
        <tr>
            <td width="100%" height="10" colspan="3" align="center" valign="middle">

            </td>
        </tr>
        <tr>
            <td colspan="3">
            <table width="778" align="center" border="0" cellspacing="0" cellpadding="0">
                <tr>

                    <td valign="top" width="778"><h1>Login</h1>
                        <table cellpadding="0" cellspacing="0" border="0">
                            <tr>                                    
                                <td height="20"><font class="text">User Name: </font></td>
                                <td height="20"><font class="text"><input id="USERNAME" name="USERNAME" type="text" value="" maxlength="50" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20"><font class="text">Password: </font></td>

                                <td height="20"><font class="text"><input type="password" name="j_id2030916047_790d5181:j_id2030916047_790d51ba" maxlength="30" size="26" /></font></td>
                            </tr>
                            <tr>
                                <td height="20" colspan="2" align="right"><script type="text/javascript" src="/EWC/javax.faces.resource/oamSubmit.js.faces?ln=org.apache.myfaces"></script><a href="#" onclick="return myfaces.oam.submitForm('j_id2030916047_790d5181','j_id2030916047_790d5181:LOGIN');" id="j_id2030916047_790d5181:LOGIN"><img src="images/login.png" style="border: none" /></a></td>
                            </tr>
                        </table>
                    </td>
                </tr>

            </table>
            </td>
        </tr>
    </table><input type="hidden" name="j_id2030916047_790d5181_SUBMIT" value="1" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="5s3ZqoVcUIwarcQb6pVzFIPhMJIzbVHnjMrXdtgA1Nten7grU/y0hMGbHtFvIExuKQOwB3IGzcSDeuPfijYMcnK23q/2N1mduMdr6RskySGELSaI2w93nL9b8NE=" /></form>
</body>
</html>

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

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

发布评论

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

评论(1

无边思念无边月 2025-01-14 16:08:19
<context-param> 
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>    
    <param-value>true</param-value> 
</context-param>

将其添加到您的 Web.xml 中
一切都会开始。

<context-param> 
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>    
    <param-value>true</param-value> 
</context-param>

add it in ur Web.xml
everything will start.

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