是否可以MarkupContainer
动态生成标记,即不为其存储HTML文件?
我想过将标记作为数据库中的普通字符串读取,以提供类似CMS的功能.
为了满足我在新Java EE 6项目中的几个关键需求而寻找一个可行的Web框架,我在这里阅读了关于这个主题的许多线程,我最终可以减少JSF 2.0,Wicket 1.4(组件之中)的预想框架数量基于)和SpringMVC 3(基于动作).
关于这些框架,我需要一些建议,如果和也许如何以下要求实现的:
最好是分离设计师/编码器工作流程,以便设计师 - 最佳 - 可以独立地使用他们喜欢的工具(如Dreamweaver)来详细说明他们的HTML,CSS,JS/jQuery文件.
轻松集成许多现有(花哨和动画)jQuery组件,例如这个滑动登录面板(这里可以看到一个演示).因此,该要求实际上很容易整合现有的HTML + CSS + jQuery代码,并且:
对于ui组件树,一种同步机制,用于将客户端(通过JS/jQuery)动态更改的视图状态与服务器上相应的视图状态同步.
我想我需要那个.例如,考虑上面的"滑动登录面板",在客户端通过JS可以更改"打开"或"关闭".其初始状态被编程为"关闭",用户决定客户端始终保持打开状态.现在,当用户在某处导航并再次返回到此视图时,登录面板状态将无法"关闭"而不是"已打开"(因为这是其初始状态,并且服务器端未发生动态状态更新).
因此,需要一个同步机制,对吧???
最佳外化(某处集中)导航规则
(a)任意页面间导航(静态导航规则),以及
(b)"向导式"导航(动态导航规则从当前状态/结果动态确定).
良好的性能(加载时间,服务器内存消耗,经验响应等).
显而易见的问题是:
JSF2,Wicket和Spring MVC3支持哪些req(以及哪些)?
一般来说,有了这个要求 - 而且我仍然不确定技术方面/后果:在这种情况下应选择哪种框架类型(基于组件与行动)(即,哪些关键决策方面或"规则"拇指"应该记住"?
非常感谢您的建议和帮助.
马丁
如何在Wicket中定义自己的反馈消息?例如:如果我提供的用户名不正确,我想收到一条错误消息,例如"用户名不正确,请尝试重新登录".而不是使用默认的错误消息.
一个例子是什么样的?
Wicket有很多AbstractRepeater实现:ListView,DataView,GridView,Loop,PropertyListView等.
就个人而言,我发现很难确定哪种视图对于哪种情况是理想的.我通常坚持使用DataView但这只是因为我已经习惯了.也许GridView对于场景A,对于B的PropertyListView来说会更好....
是否有人知道博客或任何教程,其中解释了观点的差异或任何谁可以解释哪个视图最适合哪个用例?
如果我有静态资产的相对路径(flash/blah.swf),那么以编程方式将其转换为绝对URL(http://localhost/app/flash/blah.swf)的最佳方法是什么?或者获取Wicket应用程序的基本URL的最佳方法是什么?我已经尝试过使用RequestUtils.toAbsolutePath但它似乎不能可靠地运行并经常抛出异常.这需要在部署应用程序的所有服务器上运行.
你如何处理由hibernate管理的java对象的对象相等性?在"hibernate in action"一书中,他们说人们应该支持商业密钥而不是代理密钥.
大多数时候,我没有业务密钥.想一想映射到一个人的地址.地址保存在一个Set中,并显示在Wicket RefreshingView(具有ReuseIfEquals策略)中.
我可以使用代理id或使用equals()和hashCode()函数中的所有字段.
问题是那些字段在生命周期中对象变化.要么是因为用户输入了一些数据,要么由于在OSIV(在视图中打开会话)过滤器内调用JPA merge()而导致id发生变化.
我对equals()和hashCode()契约的理解是那些在对象的生命周期内不应该改变的.
到目前为止我尝试了什么:
我需要的是在我认为在对象创建期间分配的ID.这里有什么选择?我不想引入一些额外的持久属性.有没有办法明确告诉JPA为对象分配ID?
问候
我使用的IntelliJ与Apache Wicket的和IntelliJ正显示出我喜欢的标签<wicket:extend>
,并<wicket:container>
和添加wicket:id
其他HTML标签无效.
我需要采取哪些步骤才能使IntelliJ识别出wicket标签?
我正在使用带有wicketforge插件的IntelliJ Ultimate 9.
我已经和Wicket合作了一两个月,用它制作简单的Web应用程序并习惯模型等等.现在我想继续前进,看看我是否可以将迄今为止学到的东西用于创建中/大型Web应用程序.但是,我没有花太多时间思考如何使页面无状态.
如果我理解正确的话,通过使页面可书签并确保没有向页面添加有状态组件来实现创建无状态页面.
对于我正在制作的网站,我想避免"页面过期"消息,让用户通过cookie登录,无需登录/创建会话即可创建大量内容,我希望分页等功能成为可能无国籍和可收藏.
这对于例如PHP来说没有问题,但在我看来,很多有用的Wicket组件都是有状态的.我是否参与了很多工作,比如创建我自己的无状态组件,或者它没什么大不了的?
我希望有人能指出我正确的方向来帮助我.
编辑:让我们说我想写一个博客.如果用户决定阅读文章2小时然后尝试通过例如分页进一步导航,则应该可以浏览帖子,类别等,而不必担心页面将过期.我希望允许用户一次保持登录一个月,但我并不想将他们的会话存储一个月.
我非常感谢任何有关如何使用Wicket完成我刚才描述的内容的帮助.
我在glassfish v3.0.1上使用IntelliJ IDEA 9.0.3在maven上部署了一个Java EE 6 Wicket应用程序.我使用slf4j-log4j12-1.5.6和slf4j-api-1.5.8以及log4j-1.2.16进行日志记录.
以前通过netbeans或eclipse进行部署时工作正常,但是当我使用IntelliJ IDEA部署时,我的log4j.properties文件被忽略,而glassfish的日志记录处理我的日志消息.我不认为IDEA与它有任何关系,其他一些必须改变我只是无法弄清楚是什么.
我已经验证我的log4j.properties文件在我的WEB-INF/classes目录中,而slf4j/log4j jars在我的战争的WEB-INF/lib目录中.是否有某种配置让我无法完成这项工作?
谢谢.
编辑:更新了更多信息,发布了pom依赖项.
这是我的pom.xml中的相关部分:
<!-- Guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>r05</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
<!-- Java EE 6 -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.0.Beta3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<!-- Wicket -->
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-auth-roles</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-wicket</artifactId>
<version>1.0.1-Final</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用图像作为链接,如下所示:
<wicket:link>
<a href="UploadPage.html">
<img src="/logo.png"/>
</a>
</wicket:link>
Run Code Online (Sandbox Code Playgroud)
在渲染HTML时,href
的<a>
正确设置为我的上传页面.
但奇怪的是,Wicket增加onclick=window.location.href='/logo.png'
了<img>
标签.最终结果是单击徽标会加载徽标本身,而不是上载页面.
一个简单的解决方法是不使用<wicket:link>
,并将URL硬编码到我的上传页面,但我想知道是否有适当的解决方案.