我们有一个Wicket应用程序,其中包含一个包含嵌入式Youtube视频的页面.视频嵌入并播放正常,但显然它会导致页面的其余部分无法呈现 - 看起来嵌入后的DOM元素似乎不会显示在页面上,尽管它在标记中.
查看Chrome中的错误控制台会显示:
不安全的JavaScript尝试使用网址http://yample.com/detail/COMMUNICATION/search/com-sonyericsson-hanashi 从URL http://www.youtube.com/embed/eJY7_De5opI?enablejsapi=1&autohide=1&showinfo访问框架 = 1.域,协议和端口必须匹配.
我用Google搜索了相当数量,人们似乎在说这是无害的并且无视它.这似乎是错的,在我们的例子中,它实际上打破了页面.
如果我们更改我们的应用程序以便通过ajax回调动态嵌入视频(用户单击Wicket AjaxLink),我们仍然会在控制台中收到错误,但至少页面会完全呈现.不幸的是,这对我们不起作用,因为我们需要在用户第一次点击页面时默认加载视频.
编辑:我应该补充一点,虽然错误消息来自Chrome控制台,但该错误似乎影响了我尝试过的每个浏览器:Chrome,Safari和Firefox.
我有一个控制器,我希望每个会话都是唯一的.根据spring文档,实现有两个细节:
1.初始Web配置
为了在请求,会话和全局会话级别(Web范围的bean)支持bean的范围,在定义bean之前需要一些小的初始配置.
我web.xml
在文档中显示了以下内容:
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
2. Scoped bean作为依赖项
如果要将(例如)HTTP请求作用域bean注入另一个bean,则必须注入AOP代理来代替作用域bean.
我@Scope
提供了proxyMode
如下所示的bean注释:
@Controller
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class ReportBuilder implements Serializable {
...
...
}
Run Code Online (Sandbox Code Playgroud)
问题
尽管有上述配置,但我得到以下异常:
org.springframework.beans.factory.BeanCreationException:创建名为'scopedTarget.reportBuilder'的bean时出错:当前线程的作用域'session'不活动; 考虑为这个bean定义一个范围代理,如果你想从一个单例引用它; 嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求.
更新1
下面是我的组件扫描.我有以下内容web.xml
:
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>org.example.AppConfig</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
以下内容AppConfig.java
:
@Configuration
@EnableAsync
@EnableCaching
@ComponentScan("org.example")
@ImportResource("classpath:applicationContext.xml")
public class AppConfig implements AsyncConfigurer {
...
...
}
Run Code Online (Sandbox Code Playgroud)
更新2
我创建了一个可重现的测试用例.这是一个小得多的项目,因此存在差异,但会发生同样的错误.有相当多的文件,所以我上传它作为一个tar.gz
以megafileupload.
我在Wicket和Vaadin之间挣扎.我正在开始一个微观的,需要选择Web框架.我已经缩小了对Wicket和Vaadin的选择范围.我使用过这两种框架,我喜欢它们.但是我需要做出选择.
如果我选择Vaadin:
但是,如果我去Vaadin方式:
如果我走Wicket的方式:
有什么建议?任何有这两个框架经验的人都要告诉我利弊和专业人士以及你如何做出决定.
Apache Wicket(http://wicket.apache.org/)和Apache Tapestry(http://wicket.apache.org/)都是面向组件的Web框架 - 与Apache Foundation的基于行为的框架(如Stripes)相反.两者都允许您使用Java中的组件构建应用程序.它们看起来和我很相似.
这两个框架之间有什么区别?有人有经验吗?特别:
编辑:我已经阅读了两者的文档,我已经使用过两者.这些问题不能通过阅读文档来回答,而是根据使用这些问题一段时间的经验,例如如何在无状态模式下使用Wicket用于高性能站点.谢谢.
我正在将Wicket与Wicket Auth项目一起用于我的表示层,因此我将其与Spring Security集成在一起.这是Wicket为我进行身份验证调用的方法:
@Override
public boolean authenticate(String username, String password) {
try {
Authentication request = new UsernamePasswordAuthenticationToken(
username, password);
Authentication result = authenticationManager.authenticate(request);
SecurityContextHolder.getContext().setAuthentication(result);
} catch (AuthenticationException e) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我的Spring Security XML配置的内容(内部)是:
<http path-type="regex">
<form-login login-page="/signin"/>
<logout logout-url="/logout" />
</http>
<global-method-security secured-annotations="enabled" />
<authentication-manager alias="authenticationManager"/>
<authentication-provider user-service-ref="userService">
<password-encoder ref="bcryptpasswordencoder" />
</authentication-provider>
Run Code Online (Sandbox Code Playgroud)
会话固定攻击是潜在的风险,恶意攻击者可以通过访问站点创建会话,然后说服其他用户使用相同的会话登录(通过向他们发送包含会话标识符作为参数的链接,例).Spring Security通过在用户登录时创建新会话来自动防止这种情况.如果您不需要此保护,或者它与其他一些要求冲突,您可以使用session-fixation-protection属性控制行为,有三种选择:
- migrateSession - 创建新会话并将现有会话属性复制到新会话.这是默认值.
- none - 什么都不做.原始会话将保留.
- newSession - 创建新的"干净"会话,而不复制现有的会话数据.
身份验证有效,但我是Spring Security的新手,我还有一些问题需要解答:
我已经部署了一个Apache Wicket Web应用程序,它将Spring和Hibernate用于我的Tomcat 5.5实例.当我导航到Tomcat Manager界面时,我发现我部署的Web应用程序没有运行.当我按下"开始"时,我收到以下错误消息; "失败 - 在上下文路径/意大利面条中的应用程序无法启动".
我的catalina.log包含以下内容:
Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class
Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/spaghetti] startup failed due to previous errors
Run Code Online (Sandbox Code Playgroud)
摘自web.xml: …
我正在研究java wicket框架和Apache tomcat.这里我有问题当我尝试
启动tomcat时它显示Java虚拟机启动器弹出窗口"无法创建
Java虚拟机".
单击Pop窗口上的"确定"按钮后,它会在控制台上显示错误.
VM初始化期间发生错误.
无法为对象堆保留足够的空间.
请给我任何参考或建议.
提前致谢.
框架Lift,Play和Wicket有哪些优缺点?哪些特征最好或仅受每个特征支持?
谢谢
我已经阅读了很多关于Apache Wicket的好消息,但很难找到坏事.由于没有框架始终是解决每个问题的正确解决方案,Wicket的缺点是什么以及您不使用哪种类型的项目?
也许不是一个流行的问题,但我认为这是一个重要的问题.
你能分享一下你一起使用Scala和Wicket的经历吗?它们是否适合彼此?你是否利用Scala(和FP)与Wicket相比使用Java?你为什么喜欢Wicket而不是Lift?