gpt4 book ai didi

rest - 如果 Home 接口(interface)有一个 User 引用,如何在 Seam Rest 服务中实例化一个 Home 接口(interface)?

转载 作者:行者123 更新时间:2023-12-01 05:39:49 26 4
gpt4 key购买 nike

我正在开发我的第一个 Seam + Android 应用程序,我正面临一些预期的新场景。

现在专门针对这个应用程序,我决定不保留任何状态,因为 REST 服务上的服务器调用可能有 80% 到 90% 专门用于进行简单的同步,而客户端会暂时消失,所以为这些调用在服务器端保留任何状态(可能)没有意义。

好吧,有一个特定的例程,我需要将设备发送到服务器端的对象持久化,并且该对象绑定(bind)到特定用户(我认为这是一个非常常见的场景)。

所以有一些代码可以说明。

Home 界面有一个由 Seam 注入(inject)的用户:

@Name("pesoHome")
public class PesoHome extends EntityHome<Peso> {

private static final long serialVersionUID = 6087763635317971234L;

@In
User user;

我们需要一个使用这个主界面的休息服务:

public class PesoRest{

@Logger
Log log;

@In(create = true)
UserPesquisa userPesquisa;

@In(create = true)
PesoHome pesoHome;

@POST
@Path("/cadastrar/{userEmail}")
@Consumes(MediaType.APPLICATION_JSON)
public Response cadastraPeso(@PathParam("userEmail") String email, String jsonString)
{
String json = jsonString;
System.out.println("String jSon no servidor ==>> " + json);

而且由于用户在主界面中注入(inject),在运行时会触发以下错误:

Caused by: org.jboss.seam.InstantiationException: Could not instantiate Seam component: pesoHome
at org.jboss.seam.Component.newInstance(Component.java:2144)
... 46 more
Caused by: org.jboss.seam.RequiredException: @In attribute requires non-null value: pesoHome.user

请注意,在请求的正文中,JSon 对象带来了有关此用户的信息,允许使用同样注入(inject)的 userPesquisa 引用来恢复此用户。我知道我可以有一个不同的方法,我会构建一个没有对用户的引用的 seam 组件,而不是在其中构建用户并将其放在一个新的对话中,而不是注入(inject)我需要的 home 引用,但是......
我想知道可能应该有一些更标准的方法来解决这个问题,因为这是一种常见的情况。有什么建议么? :)

[]s

最佳答案

正如 Arthur 在此线程评论中所建议的那样,我对代码进行了一些更改,现在可以使用了:

比索之家:

    @In(required=false)
User user;

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

与 PesoRest 相比:

User usuario = userPesquisa.pesquisaUsuarioPorEmail(email);
pesoHome.setUser(usuario);

而且因为现在创建时不再需要用户,所以不会触发错误,我可以在搜索数据库后进行后期绑定(bind)以恢复正确的用户。很简单的解决方案。谢谢亚瑟。

[]s

关于rest - 如果 Home 接口(interface)有一个 User 引用,如何在 Seam Rest 服务中实例化一个 Home 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com