为什么
char ch = '4';
ch = '4' + 2;
Run Code Online (Sandbox Code Playgroud)
工作,但是
char ch = '4';
ch = ch + 2;
Run Code Online (Sandbox Code Playgroud)
不?
我想用来<p:blockUI>阻止整个视图.但是因为它的属性block只接受id作为关键字而不是例如@all,我目前看到的唯一方法是使用命名容器(例如<f:subview>)来包装视图的整个内容.
不幸的是,这在语义上是脏的,我需要重命名所有绝对ID,因为<p:blockUI>已经创建了一个新的不必要的(除了)id-"前缀".
有更清洁的方法吗?
在调试时,我将断点设置为从另一个(自己的)类调用方法的行.在step into我得到一个Source not found在标题编辑器MyClass$Proxy$_$$_WeldClientProxy.myMethod() line: not available中的堆栈跟踪.
只要我带着断点返回班级,我就可以跨过那些.
我使用Eclipse Kepler SR 1,Eclipse Juno SR 2和JBoss AS 7.1.1和7.2也遇到了同样的问题.
我以前从未质疑过,但为什么呢
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{}
Run Code Online (Sandbox Code Playgroud)
代替
public HttpServletResponse doGet(HttpServletRequest request)
throws ServletException, IOException{}
Run Code Online (Sandbox Code Playgroud)
?
第二个版本不会在语义上更有意义吗?
我有一个<ui:repeat>迭代a List<String>并<p:commandButton>使用当前String的值创建一个<p:lightBox>.
但是当我添加widgetVar到我<p:lightBox>的属性时,它的值<p:commandButton>始终是最后一次迭代的String.
有人可以解释发生了什么,并(我需要widgetVar)可能指出一个解决方案?
这是我的HTML:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
<ui:repeat var="thing" value="#{bugBean.things}">
<p:lightBox widgetVar="whatever">
<h:outputLink>
<h:outputText value="#{thing}" />
</h:outputLink>
<f:facet name="inline">
<h:form>
<p:commandButton action="#{bugBean.writeThing(thing)}"
value="#{thing}" />
</h:form>
</f:facet>
</p:lightBox>
</ui:repeat>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是支持bean:
package huhu.main.managebean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class BugBean implements Serializable {
private static final long serialVersionUID = 1L; …Run Code Online (Sandbox Code Playgroud) 作为对Ajax请求的响应,我想立即返回在客户端上执行的Javascript.我试过这样但它不起作用:
<html xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head></h:head>
<h:body>
<h:form>
<h:commandButton value="js">
<f:ajax event="click" listener="#{myBean.js}"/>
</h:commandButton>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
豆子:
package mypackage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.PartialResponseWriter;
import javax.inject.Named;
@Named
public class MyBean {
public void js() {
System.out.println("called");
FacesContext ctx = FacesContext.getCurrentInstance();
ExternalContext extContext = ctx.getExternalContext();
if (ctx.getPartialViewContext().isAjaxRequest()) {
try {
extContext.setResponseContentType("text/xml");
extContext.addResponseHeader("Cache - Control ", "no - cache");
PartialResponseWriter writer = ctx.getPartialViewContext()
.getPartialResponseWriter();
writer.startDocument();
writer.startEval();
writer.write("alert(’Works!’);");
writer.endEval();
writer.endDocument();
writer.flush();
ctx.responseComplete();
} catch (Exception e) {
System.out.println(e);
}
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个@ViewScoped-annotated managedbean,它的@PostContruct-method 从数据库中获取一个列表,以显示在视图的表中。
现在,当我删除一个项目时,我希望在视图中看到更改。
为了保持这种动态和可重用,我只想从数据库中删除(而不是从列表中手动删除)。所以我需要销毁/重新创建我想的 bean。现在我通过导航到相同的视图来做到这一点。但我这样做的方式是不可重复使用的。
我可以手动销毁 bean 或导航到同一视图而不显式导航到该特定视图(可重用性)吗?
我正在使用 JSF 2.1
我正在尝试在TomEE上设置Eclipselink,但我遇到了一个问题,我得到一个错误,错过了persistence.xml.但是persistence.xml存在于ProjectPath/META-INF/persistence.xml中.
我正在使用Jersey和Eclipselink在IntelliJ上运行Maven项目.这是我的persistence.xml:
<persistence-unit name="DietMakerPostgres">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>database.DietEntity</class>
<class>database.DietSavedEntity</class>
<class>database.DietSentenceEntity</class>
<class>database.UserEntity</class>
<properties>
<property name="eclipselink.jdbc.url" value="jdbc:postgresql://xxxxxxx:5432/dietmaker"/>
<property name="eclipselink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="eclipselink.jdbc.user" value="postgres"/>
<property name="eclipselink.jdbc.password" value="xxxxxxxxx"/>
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
这是我宁静的网络服务:
@Path("/api")
@Stateless
public class DietService {
@PersistenceContext(unitName = "DietMakerPostgres")
private EntityManager em;
// The Java method will process HTTP GET requests
@GET
// The Java method will produce content identified by the MIME Media type "text/plain"
@Produces("text/plain")
public String getClichedMessage() {
return "Hello World";
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
feb 12, 2013 9:08:07 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
INFO: …Run Code Online (Sandbox Code Playgroud) 完全编辑:
也许我混淆了问题并被误解了.在简化我的代码之后,问题简化为:如何防止<p:commandButton>在页面刷新时执行它的动作方法(比如在浏览器窗口中按F5时)?
JSF代码:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:body>
<h:form>
<h:outputText value="#{bugBean.number}" />
<h:outputText value="#{bugBean.isComplete()}" />
<p:commandButton id="entryCommand" value="add"
action="#{bugBean.increase()}" update="@form" oncomplete="#{bugBean.complete()}"/>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
支持bean代码:
package huhu.main.managebean;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class BugBean implements Serializable {
private static final long serialVersionUID = 1L;
private int number;
private boolean isComplete = false;
public void increase(){
number++;
}
public void complete(){
isComplete = true;
}
public int getNumber() {
return number;
}
public …Run Code Online (Sandbox Code Playgroud) 问题标题感觉非常笨拙.我很感激编辑.
我正在尝试创建一个可重用的查询来返回由指定List的对象指定的某种对象String.
这不起作用,但我想它会说明我想要做的事情:
public List<?> getAll(String type) {
Class clazz = Class.forName(type);
return (List<clazz>) em.createQuery("SELECT t from " + type + " t").getResultList();
}
Run Code Online (Sandbox Code Playgroud) 我学到了两件事:
new-运算符创建一个新的实例,然后执行该规定connstructor初始化新的实例this())创建一个新实例.据我所知,这些陈述相互对立.
new Example()例如,然后不会创建两个实例,因为new-operator创建一个,构造函数调用this()并创建另一个实例?当然它不是,但现在究竟是什么创造了一个实例......?
class Example
{
private boolean _b;
public Example()
{
this(false);
}
public Beispiel(boolean b)
{
_b = b;
}
}
Run Code Online (Sandbox Code Playgroud) jsf-2 ×5
java ×4
primefaces ×3
java-ee ×2
ajax ×1
eclipse ×1
eclipselink ×1
facelets ×1
generics ×1
javascript ×1
jboss-weld ×1
jboss7.x ×1
jpa ×1
servlets ×1