我想这是很容易实现的,但到目前为止,我还没有发现两个注释/取消注释快捷的解决方案Java class editor
和jsf faceted webapp XHTML file editor
:
例如 :
单行java代码,来自:
private String name;
Run Code Online (Sandbox Code Playgroud)
成
//private String name;
Run Code Online (Sandbox Code Playgroud)
多行java代码,来自:
private String name;
private int age;
Run Code Online (Sandbox Code Playgroud)
成
/*private String name;
private int age;*/
Run Code Online (Sandbox Code Playgroud)
单行xhtml代码,来自:
<h:inputText ... />
Run Code Online (Sandbox Code Playgroud)
成
<!-- h:inputText ... / -->
Run Code Online (Sandbox Code Playgroud)
多行xhtml代码,来自:
<h:inputTextarea
rows="xx"
cols="yy"
...
/>
Run Code Online (Sandbox Code Playgroud)
成
<!-- h:inputTextarea
rows="xx"
cols="yy"
...
/ -->
Run Code Online (Sandbox Code Playgroud)
这应该是我朋友的一个工作项目.他在我面前展示了项目,然后我复制了项目,将其作为现有的maven项目导入(我使用的是m2eclipse插件).
然后,发生此错误.每次我尝试使用maven构建内容时都可以重现此错误.
执行mvn依赖:tree,dependency:list或通常的构建包将导致相同的错误.
从eclipse运行'package'构建的错误是:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Jackpot Portal Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet:jar:2.5.0 is missing, no dependency information available
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0 is missing, no dependency information available
[WARNING] The POM for javax.transaction:com.springsource.javax.transaction:jar:1.1.0 is missing, no dependency information available
[WARNING] The POM for org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.963s
[INFO] Finished at: Tue Jan 11 …
Run Code Online (Sandbox Code Playgroud) 如果#{myBean.birthdate}
是的java.util.Calendar
或java.util.Date
类型,可以予可能使用现有的函数也许,随着像由所产生的一个输出格式化此的EL本身内部DateFormat
的SHORT
,MEDIUM
,LONG
ABD FULL
输出类型?
相反,输出的完整形式#{myBean.birthdate}
:周三1月19日19时01分42秒WIT 2011,我只是喜欢简单输出2011年1月19日.
我应该用#{formatBean.format(myBean.birthdate)}
吗?
是否可以在EL表达式中定义变量并重新使用该变量?
例如 :
<h:inputText
value="#{myBean.data.something.very.long}"
rendered="#{myBean.data.something.very.long.showing}"
/>
Run Code Online (Sandbox Code Playgroud)
我的想法是这样的:
<!--
somehow define a variable here like :
myVar = #{myBean.data.something.very.long}
-->
<h:inputText
value="#{myVar}"
rendered="#{myVar.showing}"
/>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?谢谢 !
我有理解如何有效地使用JSF 2中的选择和POJO /实体.例如,我试图Warehouse
通过下面的下拉列表选择一个实体:
<h:selectOneMenu value="#{bean.selectedWarehouse}">
<f:selectItem itemLabel="Choose one .." itemValue="#{null}" />
<f:selectItems value="#{bean.availableWarehouses}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
以下托管bean:
@Named
@ViewScoped
public class Bean {
private Warehouse selectedWarehouse;
private List<SelectItem> availableWarehouses;
// ...
@PostConstruct
public void init() {
// ...
availableWarehouses = new ArrayList<>();
for (Warehouse warehouse : warehouseService.listAll()) {
availableWarehouses.add(new SelectItem(warehouse, warehouse.getName()));
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,我使用整个Warehouse
实体作为值SelectItem
.
当我提交表单时,会失败并显示以下消息:
'null Converter'的转换错误设置值'com.example.Warehouse@cafebabe'.
我希望Warehouse
当我将它包装在一个中时,JSF可以将正确的对象设置为我的托管bean SelectItem
.将我的实体包装在里面SelectItem
意味着跳过Converter
为我的实体创建一个.
Converter
每当我想在我的实体中使用实体时,我真的必须使用<h:selectOneMenu>
吗?JSF应该可以从可用项列表中提取所选项.如果我真的必须使用转换器,那么实际的方法是什么?到目前为止,我想到了这个:
Converter
为实体创建实现. …据我知道@this是表示当前组件触发事件,比如:
<p:commandButton process="@this" ... />
Run Code Online (Sandbox Code Playgroud)
在JSF 2 Ajax中,@ this也可以表示封装组件,如:
<h:inputText ...>
<f:ajax execute="@this" ... />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
我有一个案例,其中使用p:datatable,包括或排除@this可能会对Ajax部分提交产生不同的影响
这里的例子,在这种情况下,该进程正在使用@this,这正常工作,当过程发生,其中第一,然后依次setPropertyActionListener和最后的动作被执行:
<p:column>
<p:commandLink
value="#{anggaranDetail.map['code']}"
process="@this infoAnggaranForm:Anggaran"
update="detailDialogForm:Anggaran detailDialogForm:SubAnggaran"
oncomplete="infoAnggaranDialog.hide()"
image="ui-icon ui-icon-search"
action="#{tInputBean.updateAnggaranSubAnggaran}">
<f:setPropertyActionListener value="#{anggaranDetail}"
target="#{infoAnggaranBean.selectedAnggaranDetail}" />
</p:commandLink>
</p:column>
Run Code Online (Sandbox Code Playgroud)
但是当我从这个例子中省略@this时,setPropertyActionListener和动作永远不会执行,好像它们不存在一样.
我想知道为什么 ?也许@this除了当前组件之外还有其他一些含义,也许是本例中的当前记录?
我使用tomcat 7,这些是我的依赖:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我目前正在使用JPA实体进行大量测试,我必须在实体上调用setter方法,如下所示:
myEntity.setXXX(value);
myEntity.setYYY(value);
myEntity.setZZZ(value);
Run Code Online (Sandbox Code Playgroud)
在eclipse IDE中是否有任何魔术快捷方式或菜单来生成所有以"set"开头的setter-method-calls,就像在ctrl-space(自动完成)弹出窗口中显示的那样(我认为Object中的继承方法不是弹出窗口显示)?
所以我想象的是:
我是一个懒惰的程序员,目前正在使用Eclipse Helios IDE.
谢谢 !
我不是在寻找源 - >生成getter和setter,因为这样可以帮助我自己生成方法.生成method calls
是我想要实现的.
是否可以在我的控制器映射方法中将我的视图渲染为html,以便我可以将渲染的html作为我的json对象的一部分返回?
我常用控制器方法的示例:
@RequestMapping(value={"/accounts/{accountId}"}, method=RequestMethod.GET)
public String viewAcc(final HttpServletRequest req,
final HttpServletResponse resp, final Model model,
@PathVariable("accountId") final String docId) {
// do usual processing ...
// return only a STRING value,
// which will be used by spring MVC to resolve into myview.jsp or myview.ftl
// and populate the model to the template to result in html
return "myview";
}
Run Code Online (Sandbox Code Playgroud)
我期待的是:
@RequestMapping(value={"/accounts/{accountId}"}, method=RequestMethod.GET)
public String viewAcc(final HttpServletRequest req,
final HttpServletResponse resp, final Model model,
@PathVariable("accountId") final String docId) {
// …
Run Code Online (Sandbox Code Playgroud) 我注意到在尝试设置在jetty上运行的JSF 2 webapp时,我有这个错误:
java.lang.IllegalStateException:应用程序在启动时未正确初始化,找不到Factory:javax.faces.context.FacesContextFactory
这可以通过添加到我的web.xml轻松解决
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
我试过寻找一个详细的解释,但是徒劳无功..
jetty-maven-plugin:8.0.3.v20111011:run + jdk 7 + eclipse indigo
这是我的maven依赖:
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
这是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Basic Setup Web Application</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
</web-app>
Run Code Online (Sandbox Code Playgroud)
这是jetty插件的输出:
[INFO] <<< jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ BasicSetup <<<
[INFO]
[INFO] --- jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ …
Run Code Online (Sandbox Code Playgroud) 在这些情况下,帮助决定何时使用DTO以及何时使用实体的一般想法是什么?
我喜欢阅读传递实体的代码:
但是有关于DTO映射到实体的论点更安全,因为它是一个契约,实体可以改变为任何形式,并且DTO将保持不变.例如,类似于实体具有字段名称,并且DTO也具有字段名称.稍后,如果需求更改,数据库表发生更改,实体也可以更改,将名称更改为firstName和lastName.但是DTO仍然会有一个字段名,即firstName + lastName.
所以这里是使用DTO的优点列表:
我能想到的DTO的缺点是:
请分享你的想法..
谢谢 !
以下是来自不同地方的一些报价
亲:
将实体类重用为DTO似乎很麻烦.该类的公共API(包括公共方法的注释)不再明确定义它所呈现的合同的目的.该类最终将使用仅在将类用作DTO时才相关的方法,以及仅在将类用作实体时才相关的一些方法.关注点不会完全分开,事情会更紧密地结合在一起.对我而言,这是一个更重要的设计考虑因素,然后尝试节省创建的类文件的数量.
亲实体:
绝对不!!!
JPA实体映射到数据库,但它们不与数据库"绑定".如果数据库发生更改,则更改映射,而不是对象.对象保持不变.这就是重点!