如果我错了,请纠正我,但我想我的所有非AJAX提交应该使用Post/Redirect/Get(PRG)方式,因为GET应该用于刷新/查询数据,在我的情况下,我能想到的应用程序页面实际上只是更新数据然后刷新页面,所以我认为PRG适合这里.
我相信我可以使用faces-config.way来实现这一点<redirect/>,我可以使用它,或者我可以使用return "myview.xhtml?faces-redirect=true";
现在的问题是......
有没有什么方法可以全局配置,对于非AJAX调用/提交,自动使用faces-redirect = true,这样我的源码就像这样简单:
return "myview";
Run Code Online (Sandbox Code Playgroud) 有没有办法让mongorestore替换数据库中存在的记录而不是跳过它,这是默认行为?
我目前正在使用mongodb的最新2.4.x版本.
我希望create-session="stateless"在我的webapp中实现无状态弹簧安全性的最终目的是改变它,但事实并非如此.
随着这种变化,Spring安全性似乎无法正常工作,因为(我的假设)spring安全性不会在会话中存储任何内容,也无法对安全的Web请求进行身份验证.
我如何利用这种无状态功能?
我似乎还没有找到关于如何为无状态webapp实现无状态弹簧安全性的任何相关示例.
谢谢 !
我可以在一个声明中结合使用$ pushAll和$ inc吗?
在结合之前,这很好用:
db.createCollection("test");
db.test.insert({"name" : "albert", "bugs" : []});
db.test.update({"name":"albert"},
{"$pushAll" : {"bugs" : [{"name":"bug1", "count":1}]}});
db.test.update({"name":"albert"},
{"$inc" : {"bugs.0.count" : 1}});
db.test.update({"name":"albert"},
{"$pushAll" : {"bugs" : [{"name":"bug2", "count":1}]}});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将它组合起来时:
db.createCollection("test");
db.test.insert({"name" : "albert", "bugs" : []});
db.test.update({"name":"albert"},
{"$pushAll" : {"bugs" : [{"name":"bug1", "count":1}]}});
db.test.update({"name":"albert"},
{
"$pushAll" : {"bugs" : [{"name":"bug2", "count":1}]},
"$inc" : {"bugs.0.count" : 1}
}
);
Run Code Online (Sandbox Code Playgroud)
发生此错误:
have conflicting mods in update
Run Code Online (Sandbox Code Playgroud)
我想这有可能做到这一点,而且,我想象的不仅仅是pushAll和inc,但我不确定这是否得到支持?
我在一个数组的不同元素上尝试了多个$ inc,它有效(虽然不正确.引用下面的答案,以澄清为什么这个doensnt运行良好,有效的方法The correct way to increment both fields is as …
我不确定这种行为是否正常.
我希望panel只有在点击触发ajax请求的按钮后才能呈现我.
不使用Ajax工作正常:
p:panel id="myPanel" rendered="#{myBean.flag}"p:commandButton ajax="false" action="#{myBean.setFlagToTrue}"(flag = false)使用ajax失败:
p:panel id="myPanel" rendered="#{myBean.flag}"p:commandButton ajax="true" action="#{myBean.setFlagToTrue}" update="myPanel"(flag = false)我已经尝试省略了渲染属性,实际上ajax工作得很好.
我可以通过查看面板内反映的变化来判断.
<ui:repeat value="#{coreGridBean.heroBeanList}" var="hero"
offset="0" step="1" size="#{hero.size}" varStatus="status">
<tr class="#{status.even ? 'evenColumn' : 'oddColumn'}">
<td>#{status.index}</td>
<td>#{hero.id}</td>
<td>#{hero.race}</td>
<td>#{hero.name}</td>
</tr>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
我想知道使用class="#{status.even ? 'evenColumn' : 'oddColumn'}"是否正确.
我觉得使用单引号而不是双引号有点内疚.但在这种情况下,双引号失败,单引号获胜.
我刚刚切换到Weld来使用CDI JSF 2 Beans +会话范围.
这是我的maven依赖:
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>1.0.1-Final</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这是我的web.xml中的条目:
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
我立即注意到的一件事是我只需要重新加载我的tomcat 7 2次,java.lang.OutOfMemoryError: PermGen space并将显示在catalina.out日志文件中.
在使用Weld之前,我可以在不使用java.lang.OutOfMemoryError的情况下安全地重新加载我的tomcat 7超过10次.我认为在catalina.sh中增加我的Xmx选项会有所帮助,但这并不符合我的经验.JAVA_OPTS=-Xmx1024m
这是正常的吗?
反正是否从构造函数的参数生成简单赋值?
来自:
public class MyClass {
public MyClass(String id, String name, String desc) {
}
}
Run Code Online (Sandbox Code Playgroud)
并且通过一些神奇的捷径,它将成为:
public class MyClass {
public MyClass(String id, String name, String desc) {
this.id = id;
this.name = name;
this.desc = desc;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们有快捷方式生成这个(以避免许多'ctrl + 1'来创建非现有字段),那就更好了:
public class MyClass {
private String id;
private String name;
private String desc;
public MyClass(String id, String name, String desc) {
this.id = id;
this.name = name;
this.desc = desc;
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了一种可以接受的方法来解决这个问题:
首先,我的典型用法:
带参数的构造函数通常是来自另一个类的ctrl + …
引用这篇好文章,
新的视图范围应该正好解决这些问题.只要您一次又一次地将表单提交到同一视图,@ ViewScoped bean就会存在.换句话说,只要action方法返回null或甚至void,bean就会在下一个请求中出现.导航到不同的视图后,bean将被删除.
我想到了这些问题:
index.xhtml,如果我明确指定,return "index";或者<h:commandButton action="index.xhtml" ..>基本上返回到同一视图,bean将再次重新创建..为什么?return "?faces-redirect=true"或者<h:commandButton action="?faces-redirect=true" ..>,是的,我想跳过定义导航faces-config.xml使用<redirect/>.问题是:点击浏览器后退按钮会发生什么 - >打开一个已经销毁了viewscoped-managedbean的页面 - >从该页面的commandButton提交一个带有网格记录选择的请求?
我的期望:重新创建关联的viewscope-managebean,接收网格记录选择,并处理它们,就像从不涉及浏览器后退按钮一样.
我的经验:相关的viewscope-managebean不会重新创建,也不会接收网格记录选择.必须重新输入URL,或者在点击浏览器后退按钮后重新输入F5才能再次正常工作.
所以这是成功的场景,所有的bean都是视图编组的bean:
现在,这是涉及浏览器后退按钮的错误情况(从#6开始发生的不同事情):
是否可以使用带有浏览器后退按钮的viewscope-beans获得正常体验(就像没有浏览器后退按钮一样)?
这是我的依赖:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.3</version>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
请分享您的想法!
jsf-2 ×6
jsf ×4
java ×2
mongodb ×2
back-button ×1
cdi ×1
eclipse ×1
el ×1
jboss-weld ×1
primefaces ×1
quotes ×1
spring ×1
string ×1