选中 symbol 字段标题,将首字母改为大写。
![](https://i-blog.csdnimg.cn/blog_migrate/c39bf0b3b75af43ad4ba7bc2b739b58d.png)
此外,在 Attribute 项中,对于每个字段名称 Cell 均选择 Header。
![](https://i-blog.csdnimg.cn/blog_migrate/6dd67997ba7b5768bcb67a42a81b3335.png)
Header 必须为粗体。
![](https://i-blog.csdnimg.cn/blog_migrate/98dfb9a0b5d29c6a65a80d5f556718de.png)
修改所有其他的标题元素,如图 34 所示。
![](https://i-blog.csdnimg.cn/blog_migrate/8bd87b95b3b1c5c505a0609fefb3225d.png)
操作处理和导航
结果页面创建之后,我们需要为提交页面创建 Action Handler,以便与 EJB 相交互。这些完成之后,我们需要收集结果以便配置恰当的导航规则。我们可以使用控制的 Quick Edit 项来将 Server Side Actions 添加到应用程序中。
添加一个操作到 accessStock.jsp 页面中。
打开 accessStock.jsp 页面。
![](https://i-blog.csdnimg.cn/blog_migrate/af5a8bf046f624ce9b1bd953414fac3e.png)
选择 Submit Stock Request 按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/8ca340faf0bf1801efe4ff12ab698203.png)
在 Quick Edit 按钮菜单中选择 Command。
![](https://i-blog.csdnimg.cn/blog_migrate/b8de7e75b31e8aa41d34f2f9c2702fe1.png)
代码提供在下载文件中。将 C:JSFArticleSeriesPart4CodeSnippet1.txt 中的代码复制到 Quick Edit 窗口的编辑区中。主要的代码段是在 try 块中,但也包含了一些异常捕获和错误处理的代码:
try 块得到 Delegate 的一个实例,并调用 business 方法(该方法也依次调用 StockFacadeEJB)。结果返回 AccessStockQuoteVO。我们将返回结果存储在 stockData 名称下的请求作用域中。viewStockData.jsp 就是通过该名称期待获得这一结果的。(符号输入是从请示作用域中获得的。)
try
{
com.deploybook.stock.delegate.AccessQuoteDelegate
accessQuote = com.deploybook.stock.delegate.AccessQuoteDelegate.getAccessQuoteDelegate();
com.deploybook.stock.vo.AccessStockQuoteVO
accessQuoteForm = accessQuote.getCurrentStockData((String)requestScope.get("symbol"));
requestScope.put("stockData",accessQuoteForm);
}
如果我们捕获到一个异常,我们就在按钮组件中添加一个错误方法。codebehind 对象根据属性中配置的名称实例化页面中的每个组件。然后返回 failure。如果没有对失败返回值配置导航的话,它就会返回到同一个页面。我们可以添加一个链接到按钮控制的错误组件。
catch (com.deploybook.stock.exceptions.StockException e)
{
e.printStackTrace(System.err);
context.addMessage(buttonEx1,
new javax.faces.application.MessageImpl(
javax.faces.application.Message.SEVERITY_ERROR,
"Stock Not found",
"Symbol Not Found or invalid"
));
return "failure";
} catch (com.deploybook.stock.exceptions.SymbolNotFoundException e) {
e.printStackTrace(System.err);
context.addMessage(buttonEx1,
new javax.faces.application.MessageImpl(
javax.faces.application.Message.SEVERITY_ERROR,
"Stock Not found",
"Symbol Not Found or invalid"
));
return "failure";
} catch (com.deploybook.trade.exception.InvalidSymbolException e) {
e.printStackTrace(System.err);
context.addMessage(buttonEx1,
new javax.faces.application.MessageImpl(
javax.faces.application.Message.SEVERITY_ERROR,
"Stock Not found",
"Symbol Not Found or invalid"
));
return "failure";
}
如果所有的执行都成功完成,那么我们返回 success。然后再来配置导航。
return "success";
Quick Edit 应该包含这些代码,如图 38 所示。
![](https://i-blog.csdnimg.cn/blog_migrate/72c33aac515013f60cb122cf86a6867a.png)
Java 代码会自动添加,打开 accessStock.java 即可确认是否自动添加代码。
![](https://i-blog.csdnimg.cn/blog_migrate/e5f7cb62ef38d69c59ed8a84372d7820.png)