TL;DR:为了调试客户端,我运行了gwt:run
目标,在 Chrome 上启动了应用程序,登录后,它抛出了下面的异常,并且 GWT 开发模式没有启动(没有客户端断点工作)
javax.el.ELException: /pages/common/gwt/commonLayoutGWT.xhtml: setAttribute: Non-serializable attribute with name sessionBean
at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:90)
at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
...
我应该怎么做,或者我应该检查什么才能让我的 GWT 开发模式正常工作?
一些背景:以前,我们的团队使用一些 ant 脚本来编译、调试(服务器和客户端代码)、运行和部署我们的主应用程序。尽管过程非常繁琐且手动,但它可以毫无问题地工作。几个月前我们决定把它变成一个 Maven 应用程序,并且在使用 Maven 之后我们能够成功地执行所有操作/目标。编译、运行和部署应用程序变得快速和方便,这是我们的目标。
但是直到现在我们还没有注意到在这个过程中的某个时刻,我们的客户端调试停止了工作。只有在我们收到一些错误报告并开始尝试调试它们之后,我们才注意到这个问题。所以现在我需要设置 GWT 开发模式,无论我尝试了什么都无法做到。
我正在与:
- SmartGWT 4.0
- JDK 1.8.0_121
- GWT Eclipse 插件 2.8.0
- 玻璃鱼 4.1
- Maven 3.3
我尝试按照gwtproject的一些说明,使用默认链接器
xsiframe
进入gwt.xml
文件。但是当我执行
gwt:compile
目标时,出现了这个错误:[INFO] Linking into D:\Development\Repos\Git\Java\MyApp\myApp\target\classes\..\..\..\myApp\WebContent\pages\module\gwt\com.myapp.client.gwt.MyAppClient [INFO] Invoking Linker Cross-Site-Iframe [INFO] [ERROR] The Cross-Site-Iframe linker does not support <script> tags in the gwt.xml files, but the gwt.xml file (or the gwt.xml files which it includes) contains the following script tags:
为了解决这个问题,我使用了错误本身推荐的解决方案之一:“ ...将此属性添加到
gwt.xml
文件中:<set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>
”我
gwt:compile
再次运行,它成功完成