标签: struts

在JSE中使用JPA的EntityManager ThreadLocal模式

我正在使用Struts 1.3 + JPA(Hibernate作为持久性提供程序)开发一个简单的"Book Store"项目.我无法切换到Spring或任何其他更复杂的开发环境(例如,Jboss),我不能使用任何特定于Hibernate的技术(例如,Session类).

鉴于我在JSE环境中,我需要明确管理整个EntityManager的生命周期.

Book实体定义如下:

@Entity
public class Book {

@Id private String isbn;
private String title;
private Date publishDate;

    // Getters and Setters
}
Run Code Online (Sandbox Code Playgroud)

我定义了三个Action类,分别负责检索所有书籍实例,通过其ISBN检索单个书籍实例并将分离的书籍合并到数据库中.

为了增加业务逻辑代码和数据访问代码之间的关注点分离,我引入了一个简单的BookDAO对象,负责执行CRUD操作.理想情况下,应将所有与数据访问相关的调用委托给持久层.例如,ListBookAction定义如下:

public class ListBookAction extends Action {

    private BookDAO dao = new BookDAO();

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        // Retrieve all the books
        List<Book> books = dao.findAll();

        // Save the result set
        request.setAttribute("books", …
Run Code Online (Sandbox Code Playgroud)

struts entity hibernate thread-safety jpa-2.0

12
推荐指数
1
解决办法
9599
查看次数

我可以在不同的操作类之间传播struts2 ActionErrors吗?

如果我有一个动作,其结果是redirectAction到另一个类中的另一个动作,是否有可能在结果动作中显示验证错误?例如,在下面的示例中,如果用户执行actionA(没有与之关联的视图),并且存在错误,是否有任何方法可以在actionB结果(foo.jsp)中显示这些错误?或者我是以完全错误的方式解决这个问题?

<package name="a" extends="struts-default" namespace="/a">
    <action name="actionA" class="actionAClass">
        <result name="input" type="redirectAction">
            <param name="actionName">actionB</param>
            <param name="namespace">/b</param>
        </result>
        <result type="redirectAction">
            <param name="actionName">actionB</param>
            <param name="namespace">/b</param>
        </result>
    </action>
</package>
<package name="b" extends="struts-default" namespace="/b">
    <action name="actionB" class="actionBClass">
        <result>/foo.jsp</result>
    </action>
</package>
Run Code Online (Sandbox Code Playgroud)

java error-handling model-view-controller struts struts2

11
推荐指数
4
解决办法
2万
查看次数

为什么我们需要struts中的全局转发和全局异常?

我在struts中有一个基本问题,为什么我们需要<global-forwards><global-exceptions>struts-config.xml一样.如果我们能够与<action-mappings>自己达成同样的目标.

java struts java-ee

11
推荐指数
1
解决办法
2万
查看次数

10
推荐指数
1
解决办法
2766
查看次数

"javax.servlet.jsp.JspException:Broken pipe"的异常是什么意思?

我收到以下错误:

javax.servlet.jsp.JspException: Broken pipe

现在我已经看到了关于套接字异常的问题/答案,但是这个错误来自不同的包.任何帮助是极大的赞赏.
顺便说一下,我在struts web app Weblogic Node日志中看到了很多这些错误,我认为它与最终用户在页面重新加载/执行下一步之前关闭他们的Web浏览器有关(数据库事务需要相当一点时间执行,从30秒到4分钟).

java jsp struts exception

10
推荐指数
1
解决办法
2万
查看次数

检查jsp中的空字符串

如何在Struts-JSP页面中检查Empty String/Null String.

Struts标签 - 不起作用?

jsp struts

10
推荐指数
1
解决办法
2万
查看次数

如何防止JPA回滚交易?

调用的方法:
1.Struts Action
2.服务类方法(由@Transactional注释)
3.Xfire webservice调用

包括struts(DelegatingActionProxy)和事务在内的所有东西都是用Spring配置的.

使用JPA/Hibernate完成持久化.

有时web服务会抛出一个未经检查的异常.我捕获此异常并抛出一个已检查的异常.我不希望事务回滚,因为Web服务异常会更改当前状态.我已经注释了这样的方法:

@Transactional(noRollbackFor={XFireRuntimeException.class, Exception.class})
public ActionForward callWS(Order order, ....) throws Exception
  (...)
  OrderResult orderResult = null;

  try {
    orderResult = webService.order(product, user)
  } catch (XFireRuntimeException xfireRuntimeException) {
    order.setFailed(true);
    throw new WebServiceOrderFailed(order);
  } finally {
    persist(order);
  }
}
Run Code Online (Sandbox Code Playgroud)

我仍然得到这个例外:

org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly
Run Code Online (Sandbox Code Playgroud)

当我尝试使用junit重现此事务时,事务未标记为回滚,并且仍可以提交事务.

如何让Spring不回滚事务?

java spring struts hibernate jpa

9
推荐指数
1
解决办法
5万
查看次数

Struts中的控制器

什么是MVC中的控制器?

struts.xmlServlet(行动类)?

Controller我们的申请中可以有多个吗?

拥有多个控制器是一种好习惯吗?

java model-view-controller struts design-patterns java-ee

8
推荐指数
2
解决办法
2万
查看次数

Struts 1 - 如何显示ActionMessages

ActionMessage通过JSP以下命令在文件中显示s :

<logic:messagesPresent message="true">
    <ul id="messsages">
        <html:messages id="msg" message="true">
            <li><bean:write name="msg"/> </li>
        </html:messages>
    </ul>
</logic:messagesPresent>
Run Code Online (Sandbox Code Playgroud)

现在我想只显示选定的消息.如何指示要显示的消息?

更新

其实我有两个ActionMessages对象 - messageswarnings.现在我想在单独的JSP页面上显示它们......显示一个页面messages和其他页面warnings.

那么如何在JSP页面中指出要显示哪些消息?



更新 - 2

现在,我发现了一件奇怪的事情.

saveMessages(request, messages);
saveMessages(request, warnings);
Run Code Online (Sandbox Code Playgroud)

当我写上面的代码时,只有warnings工作.当我颠倒了上述两个陈述的顺序时,那只是messages起作用了.

似乎我们只能ActionMessages在请求中添加一个对象.如果它是正确的,那么如何分别在两个ActionMessages对象中显示消息.

java struts struts-1

8
推荐指数
1
解决办法
4万
查看次数

Struts 1 ActionForms - 表单中日期的约定是什么?

我即将开始使用Struts 1.2的e项目.没有计划转移到另一个框架.

我想知道在表单中处理日期时的惯例是什么?

  1. 我应该创建一个Date变量并创建一个setDate(String date)转换发生的方法吗?

  2. 创建一个Date变量,setDate(Date date)并在链中的某处注册一个特殊的转换器?(不知道是否可能)

  3. 创建一个String变量,setDate(String date)并让validateActionForm bean中的方法转换/验证?

还是另一种方法?

另外,如果你有任何建议来加快这个框架的速度,我真的很感激.

struts conventions struts-1

8
推荐指数
1
解决办法
6793
查看次数