﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Knight of the round table-文章分类-Jboss Seam</title><link>http://www.blogjava.net/wansong/category/39023.html</link><description>wansong</description><language>zh-cn</language><lastBuildDate>Sat, 31 Dec 2011 18:13:09 GMT</lastBuildDate><pubDate>Sat, 31 Dec 2011 18:13:09 GMT</pubDate><ttl>60</ttl><item><title>seam 部署 stuff</title><link>http://www.blogjava.net/wansong/articles/367530.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 29 Dec 2011 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/367530.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/367530.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/367530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/367530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/367530.html</trackback:ping><description><![CDATA[seam setup 
<p>seam create-project</p>
<p>seam generate</p>
<p>启动JBoss</p>
<p>seam explode&nbsp; 变更移入jboss应用服务器<br /><br /><br />seam hot deploy to jboss5.1: <br /></p>
<p class="wikiPara">yes just delete&nbsp; &lt;value&gt;WEB-INF/dev&lt;/value&gt; from line 100 of&nbsp; &nbsp;$JBOSS_HOME/server/default/conf/bootstrap/profile.xml<br /><br />seam 以war结构部署到jboss，遇到一个问题（not bound）：<br />&lt;transaction:ejb-transaction/&gt;</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/wansong/aggbug/367530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-29 21:56 <a href="http://www.blogjava.net/wansong/articles/367530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss 在tomcat中部署</title><link>http://www.blogjava.net/wansong/articles/367428.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 28 Dec 2011 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/367428.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/367428.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/367428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/367428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/367428.html</trackback:ping><description><![CDATA[<div>http://docs.jboss.org/seam/2.0.0.GA/reference/zh/html/configuration.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   在tomcat中部署<br /><br /><div>http://community.jboss.org/wiki/EmbeddedAndTomcat<br /><br /><div>http://www.iteye.com/topic/1046702</div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/367428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-28 16:50 <a href="http://www.blogjava.net/wansong/articles/367428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>seam 中 pageflow (jbpm)的使用</title><link>http://www.blogjava.net/wansong/articles/367206.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 26 Dec 2011 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/367206.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/367206.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/367206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/367206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/367206.html</trackback:ping><description><![CDATA[<div>http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform/5/html/Seam_Reference_Guide/numberguess.html<br /><br /><div><div>http://docs.jboss.org/seam/2.0.0.GA/reference/zh/html/configuration.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在tomcat中部署<br /></div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/367206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-26 19:41 <a href="http://www.blogjava.net/wansong/articles/367206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss Seam 介绍</title><link>http://www.blogjava.net/wansong/articles/364841.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 25 Nov 2011 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/364841.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/364841.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/364841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/364841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/364841.html</trackback:ping><description><![CDATA[<a href="http://www.open-open.com/news/view/1c64593">http://www.open-open.com/news/view/1c64593</a><img src ="http://www.blogjava.net/wansong/aggbug/364841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-11-25 17:28 <a href="http://www.blogjava.net/wansong/articles/364841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>seam testing</title><link>http://www.blogjava.net/wansong/articles/339465.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 01 Dec 2010 00:47:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/339465.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/339465.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/339465.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/339465.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/339465.html</trackback:ping><description><![CDATA[http://hypercube1024.javaeye.com/blog/149377<br />
<span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;RegisterTest&nbsp;</span><span class="keyword">extends</span><span>&nbsp;DBUnitSeamTest&nbsp;{</span></span> <br />
<br />
<a href="http://testng.org/doc/documentation-main.html">http://testng.org/doc/documentation-main.html</a> ???? <br />
<br />
<p>按Seam参考手册，JBoss Seam项目的测试可以使用org.jboss.seam.mock.SeamTest来完成。</p>
http://happydev.javaeye.com/blog/328099
<img src ="http://www.blogjava.net/wansong/aggbug/339465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-12-01 08:47 <a href="http://www.blogjava.net/wansong/articles/339465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF学习</title><link>http://www.blogjava.net/wansong/articles/324114.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 22 Jun 2010 01:26:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/324114.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/324114.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/324114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/324114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/324114.html</trackback:ping><description><![CDATA[在JSF的几个生命周期阶段，分别会在以下几个阶段调用组件的Converter：<br />
1，对于<span style="color: red">UIInput</span>组件：如果按钮事件的immediate属性为true（&lt;h:commandButton immediate="true" .../&gt;），JSF会在 [<span style="color: red">Apply Request Values Phase</span>：应用请求值阶段]，反之，JSF会在[<span style="color: red">Process Validations Phase</span>：数据检查阶段] 检验用户输入的有效性，有效的情况下会调用绑定到该UIInput组件的Converter对用户输入进行转换。同时，跟UIOutput组件一样，JSF会在[<span style="color: red">Render Response</span>：重画画面阶段]调用Converter对UIInput进行显示前的变换处理<br />
2，对于<span style="color: red">UIOutput</span>组件：JSF会在[<span style="color: red">Render Response</span>：重画画面阶段]调用绑定到该UIOutput组件的Converter对将要显示的值进行变换。 <br />
<br />
JSF的生命周期：一个典型JSF请求分成以下6个阶段：(http://www.lifevv.com/tenyo/doc/20070520012424461.html)<br />
<br />
<ol>
    <li><span style="color: red">Restore View Phase</span>：重载视图阶段 <br />
    <li><span style="color: red">Apply Request Values Phase</span>：应用请求值阶段 这个阶段主要做2件事：第一，把用户提交的数据设置到组件中去；第二，把用户事件（比如按下按钮等）加到事件队列。<br />
    <li><span style="color: red">Process Validations Phase</span>：数据检查阶段 这个阶段主要做数据的合法性检查，如果用户输入了非法数据，则在画面上显示相应的错误消息。<br />
    <li><span style="color: red">Update Model Values Phase</span>：更新模型值阶段 把组件里的值设置到Model中去。<br />
    <li><span style="color: red">Invoke Application Phase</span>：用户业务逻辑阶段 主要处理用户按钮事件等，调用业务逻辑处理（action）。<br />
    <li><span style="color: red">Render Response</span>：重画画面阶段 画面描画和展现。</li>
</ol>
<p><br />
<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/wansong/aggbug/324114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-06-22 09:26 <a href="http://www.blogjava.net/wansong/articles/324114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Seam 参考文档网址</title><link>http://www.blogjava.net/wansong/articles/265448.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 14 Apr 2009 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/265448.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/265448.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/265448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/265448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/265448.html</trackback:ping><description><![CDATA[http://docs.jboss.org/seam/2.0.0.GA/reference/zh/html/controls.html<br />
<img src ="http://www.blogjava.net/wansong/aggbug/265448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2009-04-14 11:04 <a href="http://www.blogjava.net/wansong/articles/265448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Selecting from a list of entities   &lt;s:convertEntity/&gt; &lt;s:convertEnum/&gt;</title><link>http://www.blogjava.net/wansong/articles/265447.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 14 Apr 2009 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/265447.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/265447.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/265447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/265447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/265447.html</trackback:ping><description><![CDATA[&lt;rich:pickList value="#{manageCountryGroup.selectedCountries}" sourceListWidth="200" targetListWidth="200"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &lt;s:selectItems value="#{availableCountriesQuery.resultList}" var="c" label="#{c.name}" itemValue="#{c}" &gt;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/s:selectItems&gt;<br />
&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;s:convertEntity/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a4j:support action="#" event="onlistchanged" reRender="cgManagementPanel" ajaxSingle="true" /&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/rich:pickList&gt;<br />
<br />
<br />
<div class="postText">
<h2>Selecting from a list of entities </h2>
<p>See <a href="http://docs.jboss.org/seam/latest/reference/en/html/controls.html" class="external free" title="http://docs.jboss.org/seam/latest/reference/en/html/controls.html" rel="nofollow">http://docs.jboss.org/seam/latest/reference/en/html/controls.html</a>
</p>
<ul>
    <li> Use <tt>&lt;s:selectItems&gt;</tt> to produce a list of labeled select items from a list of entities.
    </li>
    <li> Use <tt>&lt;s:convertEntity&gt;</tt> to map back and forth between the select items and the actual entity values.  This is what allows you to map the <tt>value</tt> of the <tt>&lt;h:selectOneMenu&gt;</tt> directly to the property of the referencing entity (e.g. a property that is a many-to-one).
    </li>
</ul>
<pre>&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;                        (1)<br />
<br />
&lt;s:selectItems value="#{continents.resultList}" var="continent"                  (2)<br />
<br />
label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;<br />
<br />
&lt;s:convertEntity /&gt;                                                              (3)<br />
<br />
&lt;/h:selectOneMenu&gt;<br />
<br />
</pre>
<ol>
    <li> <tt>person</tt> is an entity that has been outjected into the
    conversation. It has a 'continent' property which is many-to-one
    association with another entity.
    </li>
    <li> <tt>continents</tt> is a Seam application framework 'query'
    object. This 'query' object should probably use a Seam-managed
    EntityManager because we want have the Hibernate <a href="http://shrubbery.mynetgear.net/wiki/Session-in-view_with_Seam" title="Session-in-view with Seam">session-in-view behavior</a> so we don't get lazy initialization exceptions when rendering the labels, etc.
    </li>
    <li> <tt>s:convertEntity</tt> will convert the Continent entities into values for the HTML select, and vice versa.
    </li>
</ol>
<h3> Tips </h3>
<ol>
    <li> To avoid LazyInitializationExceptions and/or writing extra code in your EJB/Controller bean to initialize objects, use <a href="http://shrubbery.mynetgear.net/wiki/Session-in-view_with_Seam" title="Session-in-view with Seam">session in view</a>.
    </li>
    <li> For required fields, put <tt>required="true"</tt> on the <tt>selectOneMenu</tt> and override <tt>javax.faces.component.UIInput.REQUIRED</tt> in <tt>messages.properties</tt> (see <a href="http://shrubbery.mynetgear.net/wiki/Standard_Faces_Error_Messages" title="Standard Faces Error Messages">Standard Faces Error Messages</a>).
    </li>
</ol>
<h2> Select from an enum </h2>
<p>This works just like selecting an entity, but <tt>&lt;s:convertEnum/&gt;</tt> is used instead.
</p>
<p><br />
XHTML:
</p>
<pre>&lt;h:selectOneMenu id="marketStatus" value="#{person.status}"         (1)<br />
<br />
required="true"&gt;<br />
<br />
&lt;s:selectItems value="#{enumLists.statusArray}" var="status"    (2)<br />
<br />
label="#{status}"<br />
<br />
noSelectionLabel="Select a status..."/&gt;<br />
<br />
&lt;s:convertEnum/&gt;<br />
<br />
&lt;/h:selectOneMenu&gt;<br />
<br />
</pre>
<p>EnumLists.java:
</p>
<pre>@Name("enumLists")<br />
<br />
@Scope(ScopeType.STATELESS)<br />
<br />
public class EnumLists<br />
<br />
{<br />
<br />
public Status[] getStatusArray()<br />
<br />
{<br />
<br />
return Status.values();<br />
<br />
}<br />
<br />
}<br />
<br />
</pre>
<ol>
    <li> <tt>person</tt> is an entity that has been outjected into the conversation.  It has a 'status' property which is an enum.
    </li>
    <li> We need to expose the values of the enum as a list or an
    array, so we make a stateless POJO component with getters that returns
    arrays for various enums called <tt>enumLists</tt>.
    </li>
</ol>
<h2> Multi-select from an enum </h2>
<p>Here we use a <a href="http://www.exadel.com/tutorial/jsf/jsftags-guide.html#selectmany" class="external text" title="http://www.exadel.com/tutorial/jsf/jsftags-guide.html#selectmany" rel="nofollow">selectManyCheckbox</a>.
</p>
<p><br />
</p>
<pre>&lt;h:selectManyCheckbox id="roles" <br />
<br />
layout="pageDirection" value="#{person.roles}"<br />
<br />
required="true"&gt;<br />
<br />
&lt;s:selectItems value="#{enumLists.roleArray}" var="role"<br />
<br />
label="#{role}"/&gt;<br />
<br />
&lt;s:convertEnum/&gt;<br />
<br />
&lt;/h:selectManyCheckbox&gt;<br />
<br />
</pre>
<p>Unfortunately, Seam's <tt>convertEnum</tt> can't handle multi selects yet.  This example will yeild a strange exception:
</p>
<pre>java.lang.IllegalArgumentException: java.util.List is not an enum type<br />
<br />
</pre>
<p>Luckily, it's very easy to create <a href="http://shrubbery.mynetgear.net/wiki/Custom_converter_tags_with_Facelets" title="Custom converter tags with Facelets">custom converter tags with Facelets</a>.  Here is the converter class that handles both ordinary enums and multi-selects:
</p>
<pre>package eg;<br />
<br />
<br />
<br />
import javax.faces.component.*;<br />
<br />
import javax.faces.context.*;<br />
<br />
import javax.faces.convert.*;<br />
<br />
import javax.faces.el.ValueBinding;<br />
<br />
import java.util.List;<br />
<br />
import java.util.Collection;<br />
<br />
<br />
<br />
/**<br />
<br />
* Converter for enum multi-selects.<br />
<br />
* &lt;br&gt;User: Joshua Davis<br />
<br />
* Date: May 16, 2007<br />
<br />
* Time: 7:25:58 AM<br />
<br />
*/<br />
<br />
public class EnumListConverter implements Converter<br />
<br />
{<br />
<br />
@SuppressWarnings({"unchecked"})<br />
<br />
public Object getAsObject(FacesContext context,<br />
<br />
UIComponent comp,<br />
<br />
String value)<br />
<br />
throws ConverterException<br />
<br />
{<br />
<br />
ValueBinding binding = comp.getValueBinding("value");<br />
<br />
Class enumType = binding.getType(context);<br />
<br />
if (enumType.isEnum())  // Single enum?<br />
<br />
return Enum.valueOf(enumType, value);<br />
<br />
else    // List of enums.<br />
<br />
{<br />
<br />
// Find the s:selectItems so we can get the enum.<br />
<br />
List children = comp.getChildren();<br />
<br />
for (Object child&nbsp;: children)<br />
<br />
{<br />
<br />
if (child instanceof UIComponent)<br />
<br />
{<br />
<br />
UIComponent c = (UIComponent) child;<br />
<br />
ValueBinding b = c.getValueBinding("value");<br />
<br />
Class t = b.getType(context);<br />
<br />
// Array of enums: use the component type.<br />
<br />
if (t.isArray() &amp;&amp; t.getComponentType().isEnum())<br />
<br />
{<br />
<br />
t = t.getComponentType();<br />
<br />
return Enum.valueOf(t,value);<br />
<br />
}<br />
<br />
else<br />
<br />
{<br />
<br />
Object v = b.getValue(context);<br />
<br />
// Collection of enum values, get the type of the first element.<br />
<br />
if (v instanceof Collection)<br />
<br />
{<br />
<br />
t = ((Collection) v).iterator().next().getClass();<br />
<br />
return Enum.valueOf(t,value);<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
throw new ConverterException("Unable to find selectItems with enum values!");<br />
<br />
}<br />
<br />
}<br />
<br />
<br />
<br />
public String getAsString(FacesContext context,<br />
<br />
UIComponent component,<br />
<br />
Object object)<br />
<br />
throws ConverterException<br />
<br />
{<br />
<br />
if (object == null) {<br />
<br />
return null;<br />
<br />
}<br />
<br />
<br />
<br />
return ((Enum) object).name();<br />
<br />
}<br />
<br />
<br />
<br />
}<br />
<br />
</pre>
<div>
Retrieved from "<a href="http://shrubbery.mynetgear.net/wiki/Select_lists_with_Seam">http://shrubbery.mynetgear.net/wiki/Select_lists_with_Seam</a>"</div>
</div>
<br />
<br />
<img src ="http://www.blogjava.net/wansong/aggbug/265447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2009-04-14 11:01 <a href="http://www.blogjava.net/wansong/articles/265447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>