我想问一下建筑模式。我编写了两个片段代码来演示我的要求。
第一种方法是:
//a method on controller layer (in Spring framework)
@RequestMapping(...)
public ShopDTO findShop(final Long shopId) {
Shop shop = shopService.getShopById(shopId);
ShopDTO shopDTO = shopMapper.toShopDTO(shop);
return shopDTO;
}
//A method on service layer
@Transactional
public Shop getShopById(final Long shopId) {
//some code to find an entity by id
}
Run Code Online (Sandbox Code Playgroud)
ShopDTO注意:从商店实体映射到控制器层的代码。第二种方式是:
//a method on controller layer (in Spring framework)
@RequestMapping(...)
public ShopDTO findShop(final Long shopId) {
ShopDTO shopDTO = shopService.getShopById(shopId);
return shopDTO;
}
//A method on service layer
@Transactional …Run Code Online (Sandbox Code Playgroud) 在我的实体中:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(unique=true, nullable=false)
private int tId;
....
public int getTId() {
return this.tId;
}
public void setTId(int tId) {
this.tId = tId;
}
Run Code Online (Sandbox Code Playgroud)
和我的JSF页面中的代码:
<ui:repeat value="#{techCat.techsOfCat}" var="post">
<h:outputText value="#{post.getTId()}"/>
...
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
结果很好.但如果我编码:
<ui:repeat value="#{techCat.techsOfCat}" var="post">
<h:outputText value="#{post.tId}"/>
...
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
我遇到了一个错误:
value="#{post.tId}": The class 'model.Technology' does not have the property 'tId'.
Run Code Online (Sandbox Code Playgroud)
我真的不明白那个错误.你能跟我解释一下吗?谢谢
我遇到的问题与在GlassFish中将JSF输入提交值的设置请求字符编码设置为UTF-8相同,提交的值以Mojibake形式到达.但是,答案是针对GlassFish而我正在使用JBoss AS 7.
我已经指定了JDBC连接URL以使用UTF-8:
jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
在我的JSF页面顶部:
<?xml version='1.0' encoding='UTF-8' ?>
Run Code Online (Sandbox Code Playgroud)
如何在JBoss AS 7中解决同样的问题?或者更好,以更通用的方式使其适用于所有服务器?
我说的是JavaEE中的JPA。我读过的一本书里谈到:
EntityManager em;
em.find(Employee.class, id);
Run Code Online (Sandbox Code Playgroud)
“这是实体管理器在数据库中查找实例所需的所有信息,当调用完成时,返回的员工将是一个托管实体,这意味着它将存在于与该实体关联的当前持久性上下文中经理 - pro-ejb3-jpa”。但我不知道一个实体何时停止被管理,merge()如果我想更新、删除,我必须再次被管理......