当我点击页面中的p:commandButton
时出现此错误java.lang.IllegalStateException:PWC3999:无法创建会话 提交回复后
按钮采用h:形式,如下所示:
<p:commandButton value="Save" action="#{discussionManager.save}" ajax="false"/>
但是h:commandButton工作正常:
<h:commandButton value="Save" action="#{discussionManager.save}"/> (this works)
这是带有方法的bean
@Named
@RequestScoped
public class DiscussionManager {
private static final Logger logger = Logger.getLogger("DiscussionManager");
@Inject
private DiscussionDao discussionDao;
private Discussion discussion = new Discussion();
@Produces
@Named
@RequestScoped
public Discussion getDiscussion() {
return discussion;
}
public String save() {
logger.info("Hello");
discussionDao.create(discussion);
return "list";
}
}
我在发布这个问题之前已经等了一整天,因为我觉得我应该知道如何让这个工作。但是我已经阅读并重新阅读了我的书以及其他一些帖子。我只是不明白为什么它不起作用。
答案 0 :(得分:1)
我怀疑这是因为bean超出了范围。当您关闭ajax时,它会提交表单,而您实际上正在处理新请求。尝试将范围扩展到视图范围。
答案 1 :(得分:1)
不太确定我改变了什么才能让它正常工作,因为现在整个工作正常。但为了完整起见,这是我页面的相关部分
<h3>Write your message below</h3>
<p:editor id="editor"
value="#{discussion.message}"
widgetVar="editor"
width="600"
required="true"/>
<h:message for="editor"/>
<h:panelGrid columns="2" style="margin-top:10px">
<p:commandButton id="submitButton" value="Save" action="#{discussionManager.save}" ajax="false" icon="ui-icon-disk"/>
<p:commandButton id="clearButton" type="button" value="Clear" onclick="editor.clear()" icon="ui-icon-close" />
</h:panelGrid>
这是我的豆子。希望有人觉得这很有用......
@Named
@RequestScoped
public class DiscussionManager implements Serializable {
private static final Logger logger = Logger.getLogger("DiscussionManager");
@Inject
private DiscussionDao discussionDao;
private Discussion discussion = new Discussion();
@Produces
@Named
@RequestScoped
public Discussion getDiscussion() {
return discussion;
}
public String save() {
logger.info("Hello");
discussionDao.create(discussion);
return "list";
}
}
答案 2 :(得分:1)
我无法对你的最终答案发表评论,所以我必须再添加一个答案。我相信你为使你的例子工作所做的是将widgetVar添加到你的编辑器组件中。我也有这个问题。在添加widgetVar行之前,PrimeFaces Demo上的示例将无法正常工作。您需要在onclick调用中引用widgetVar名称而不是id。为清晰起见,我在id和widgetVar之间使用了不同的名称,因此我将编辑器代码更改为:
<h3>Write your message below</h3>
<p:editor id="editorID"
value="#{discussion.message}"
widgetVar="editorWidget"
width="600"
required="true"/>
<h:message for="editor"/>
<h:panelGrid columns="2" style="margin-top:10px">
<p:commandButton id="submitButton" value="Save" action="#{discussionManager.save}" ajax="false" icon="ui-icon-disk"/>
<p:commandButton id="clearButton" type="button" value="Clear" onclick="editorWidget.clear()" icon="ui-icon-close" />
</h:panelGrid>
我希望这有助于澄清。