﻿<?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-奇葛格的BLOG-随笔分类-Wicket</title><link>http://www.blogjava.net/onlykeke/category/14117.html</link><description>红尘最可笑，我自乐逍遥</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:50:41 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:50:41 GMT</pubDate><ttl>60</ttl><item><title>Wicket Notes [随时更新]</title><link>http://www.blogjava.net/onlykeke/archive/2006/12/14/87751.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Thu, 14 Dec 2006 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/12/14/87751.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/87751.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/12/14/87751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/87751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/87751.html</trackback:ping><description><![CDATA[1.CheckGroup 中 使用Check.而非CheckBox.<br /><br />2.Form中的组件，纳入CompoundPropertyModel，似乎方可得到rawinput。有待确认。<br /><br />3.Form如果不使用CompoundPropertyModel，注意给控件设置model。<br /><br />4.dropdownchoice,未选择情况下提交，即选中了“请选择”。服务器端得到：<br />   getValue():-1<br />   getInput():<br />   getModelObjectAsString():<br /><br />5.一个model示例：<br />int cols=5;<br />int rows=5;<br /><br />final String[][] values=new String[rows][cols];<br /><br />form.add(new Loop("rows", rows) {<br />   populateitem(Item item) {<br />     final int row=item.getindex();<br />     item.add(new Loop("cols", cols) { <br />          populateitem(Item item) {<br />               final int col=item.getindex();<br />               IModel model=new Model() {<br />                    setobject(Component c, Object o) {<br />                           values[row][col]=o; <br />                    }<br /><br />                    Object getObject(Component c) {<br />                              return values[row][col];<br />                    }};<br />                    item.add(new TextField("cell", model)); <br /><br />   });<br /><br />&lt;table&gt;<br />&lt;tr wicket:id="rows"&gt;&lt;td wicket:id="cols"&gt;&lt;input type="text" wicket:id="cell"/&gt;&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;<br /><img src ="http://www.blogjava.net/onlykeke/aggbug/87751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-12-14 17:04 <a href="http://www.blogjava.net/onlykeke/archive/2006/12/14/87751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>setDefaultFormProcessing(false) &amp; type="submit"</title><link>http://www.blogjava.net/onlykeke/archive/2006/09/11/68997.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Mon, 11 Sep 2006 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/09/11/68997.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/68997.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/09/11/68997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/68997.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/68997.html</trackback:ping><description><![CDATA[
		<p>TextField productTag = null;<br />当使用：<br />form.add(new Button("verifyTag"){<br />   public void onSubmit() {<br />   System.out.println("verifyTag：productTag.getRawInput:"+productTag.<font color="#0066ff">getRawInput()</font>);<br />   ......<br />    if(true)<br />     info("该产品标识可以使用");<br />   }<br />  }.<strong><font color="#0066ff">setDefaultFormProcessing(false)</font></strong>);<br /><br />这样的单一form多按钮时，需要注意的是html模板中的input type 应该设置为submit,否则失效：<br /><br />&lt;input wicket:id="verifyTag" type="<font color="#0066ff">submit</font>" value="检测唯一性" size="30"/&gt;<br /><br />另外，想得到输入值，可以使用<strong>getRawInput()</strong>方法获得，但是在form的onSubmit()中该方法似乎得不到值，有待进一步实验。</p>
<img src ="http://www.blogjava.net/onlykeke/aggbug/68997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-09-11 17:40 <a href="http://www.blogjava.net/onlykeke/archive/2006/09/11/68997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getParent().getModelObject(); </title><link>http://www.blogjava.net/onlykeke/archive/2006/09/11/68969.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Mon, 11 Sep 2006 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/09/11/68969.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/68969.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/09/11/68969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/68969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/68969.html</trackback:ping><description><![CDATA[In the following code:<br /><br />            add(new Button("saveButton") 
<div style="DIRECTION: ltr"><span class="q"><br />            {<br />                public void onSubmit() <br />                {<br />                    //save form values, redirect<br />@@                    Product product = (Product)getModelObject();<br />                    ProductProxy.addProduct(product);<br />                    setResponsePage(new EditProduct()); <br />                }<br /></span></div>            });<br /><br />The line marked @@ is wrong. You ask from the submit button the modelobject. Because the button doesn't have a model (model == null), and the form has a compound model, it will use the component id "saveButton" as an OGNL expression with the form modelobject as base. <br /><br />This happened because you create an anonymous subclass on the Button. The event handler 'onSubmit' has a this pointer to the button.<br /><br />This can be solved by changing the line to the following:<br />Product product = (Product)getParent().getModelObject(); <br /><br />Martijn<br /><br /><br /><div><span class="gmail_quote">On 3/20/06, <b class="gmail_sendername">Vincent Jenks</b> &lt;<a href="http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=3504042&amp;i=0" target="_top">scientifik.com@...</a>&gt; wrote:</span><blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"><div style="DIRECTION: ltr">OK, believe it or not, I did just that and *still* cannot get it to work.<br /><br />Here's my Form class:<span class="q"><br /><br />    private static class EditProductForm extends Form <br />    {<br />        public EditProductForm(String name, Product product) <br />        {<br />            super(name, new CompoundPropertyModel(product));<br />            <br />            //get collection of Category items<br />            IModel catsModel = new LoadableDetachableModel()<br />            { <br />                protected Object load()<br />                {<br />                    return ProductProxy.getAllCategories(); //via proxy<br />                }<br />            };<br />            <br />            //add form components <br />            add(new TextField("productCode").add(RequiredValidator.getInstance()));<br />            add(new TextField("name").add(RequiredValidator.getInstance()));<br />            add(new TextArea("summary").add( RequiredValidator.getInstance()));<br /></span></div><div style="DIRECTION: ltr">            add(new TextArea("description").add(RequiredValidator.getInstance()));<br />            add(new TextField("unitPrice")); <br />            add(new TextField("weight")); <br />            add(new TextField("height"));<br />            add(new TextField("width"));<br />            add(new TextField("length"));<br />            add(new TextField("insuredValue")); <br />            add(new CheckBox("freeShipping"));<br />            add(new TextField("thumbnail").add(RequiredValidator.getInstance()));<br />            add(new TextField("photo").add(RequiredValidator.getInstance ()));<br />            <br />            //add reset button<br />            add(new Button("cancelButton")<br />            {<br />                public void onSubmit()<br />                {<br />                    <br />                    setResponsePage(new EditProduct()); <br />                }<br />            }.<strong><font style="BACKGROUND-COLOR: #ffffff" color="#3366ff">setDefaultFormProcessing(false)</font></strong>);<br />            <br />            //add reset button<br />            add(new Button("saveButton")<span class="q"><br />            {<br />                public void onSubmit() <br />                {<br />                    //save form values, redirect<br />                    Product product = (Product)getModelObject();<br />                    ProductProxy.addProduct(product);<br />                    setResponsePage(new EditProduct()); <br />                }<br /></span></div><div style="DIRECTION: ltr">            });<br />        }<br />    }<br /><br />The cancel button works now but the save button is now throwing an exception:<br /><br />wicket.WicketRuntimeException : Method public abstract void wicket.markup.html.form.IFormSubmitListener.onFormSubmitted () of interface java.lang.reflect.Method threw an exception ...<br />...<br />Caused by: java.lang.reflect.InvocationTargetException ...<br />...<br />Caused by: wicket.WicketRuntimeException: OGNL Exception: expression='saveButton'; path='4:editProductForm:saveButton' <br />...<br />Caused by: ognl.NoSuchPropertyException: com.myapp.model.Product.saveButton<br />...<br /><br />Here's the form HTML just in case I'm goofing something there:<br /><br />&lt;form wicket:id="editProductForm" id="editProductForm"&gt; <br />...<br />                                    &lt;tr&gt;<br />                                        &lt;td colspan="2"&gt;<br />                                            &lt;input type="submit" wicket:id="saveButton" value="Save" /&gt; <br />                                            &amp;nbsp;<br />                                            &lt;input type="submit" wicket:id="cancelButton" value="Cancel" /&gt;<br />                                            &lt;br /&gt; <br />                                            &lt;br /&gt;<br />                                        &lt;/td&gt;<br />                                    &lt;/tr&gt;<br />                                    &lt;/form&gt;<br /><br />What's wrong w/ this?<br /><br />Thanks!</div></blockquote></div><img src ="http://www.blogjava.net/onlykeke/aggbug/68969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-09-11 15:24 <a href="http://www.blogjava.net/onlykeke/archive/2006/09/11/68969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义带有校验功能的过滤字段</title><link>http://www.blogjava.net/onlykeke/archive/2006/09/08/68598.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Fri, 08 Sep 2006 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/09/08/68598.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/68598.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/09/08/68598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/68598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/68598.html</trackback:ping><description><![CDATA[代码如下：<br />public class TextFilteredPropertyColumnIntConvert extends TextFilteredPropertyColumn{<br />  public TextFilteredPropertyColumnIntConvert(IModel displayModel, String propertyExpression) {<br />   super(displayModel, propertyExpression);<br />  }<br />  public Component getFilter(String componentId, FilterForm form) {<br />   return new TextFilterIntConvert(componentId,getFilterModel(form),form);<br />  }  <br /> } <br /> public class TextFilterIntConvert extends AbstractFilter{<br />  private static final long serialVersionUID = 1L;<br />  private final TextField filter;<br />  public TextFilterIntConvert(String id, IModel model, FilterForm form){<br />   super(id, form);<br />   filter = new TextField("filter", model){<br />    public IConverter getConverter() {<br />     return new SimpleConverterAdapter(){<br />      public String toString(Object value){<br />         return value != null ? value.toString() : null;<br />      }<br />      public Object toObject(String value) {<br />       Long l = new Long(0);<br />       try{<br />        l = Long.valueOf(value);<br />       }catch(Exception e){<br />        e.printStackTrace();<br />       }<br />       return l;<br />      }<br />     };<br />    }<br />   };<br /><strong>   filter.setConvertEmptyInputStringToNull(false);//TextField默认设为true，如果没有输入，转为null。此处设为空字符串""</strong><br />   enableFocusTracking(filter);<br />   add(filter);<br />  }<br />  public final TextField getFilter(){<br />   return filter;<br />  }  <br /> }<img src ="http://www.blogjava.net/onlykeke/aggbug/68598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-09-08 20:41 <a href="http://www.blogjava.net/onlykeke/archive/2006/09/08/68598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wicket Q&amp;A</title><link>http://www.blogjava.net/onlykeke/archive/2006/09/07/68172.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Thu, 07 Sep 2006 01:09:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/09/07/68172.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/68172.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/09/07/68172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/68172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/68172.html</trackback:ping><description><![CDATA[1		<p>&gt; I have a requirement that I need to cofigure the language encoding based on <br />&gt; the Request Header "accept-charset". If this is not available than we have <br />&gt; our default charset. </p><p>It is already implemented The default is UTF-8 and can be configured <br />via getRequestCycleSettings().setResponseRequestEncoding(String)<br /><br />2<br />&gt; <span>Why there's no <b class="hilt">setConverter</b>(<b class="hilt">IConverter</b> c) just like add(IValidator v) returning the object itself? <br /></span><br /><span>to elaborate a little</span><br /><span>lets say we did let you use a setter</span><br /><span>then we have to keep a reference to the converter in the Component, so when serialized it is one more object - that almost never changes - that has to be serialized. making components session footprint even bigger. </span><br /><span>also if we let you use a setter we have to version the changes - so thats yet another object we have to add to session (the undo object)</span><br /><span>by making getconverter() overridible we eliminate the two scenarios above. </span><br /><span>-Igor</span><br /></p>
3<br />&gt;I'm getting unpredictable exceptions about expired pages, so I'm
requesting some information about them.  I'm using the &gt;latest snapshot
of 1.2 (core and extensions).<br />&gt;What causes pages to be expired?<br />&gt;How can I prevent pages from throwing expiration exceptions?
<br />&gt;If a page is expired, how can I present a custom page to the user?<br /><br />when a url is accessed for a page that cannot be found in the pagemap it is considered an expired page. <br /><br />so
basically you create a page, some time passes and that page is removed
from the pagemap via the page eviction strategy. so if you go back to
that page and click a link, that url will try to retrieve the page from
the pagemap, and since the page cannot be found you get the page
expired page.
<br />you can set your own via Application.getApplicationSettings().setPageExpiredErrorPage()<br /><br /><br /><img src ="http://www.blogjava.net/onlykeke/aggbug/68172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-09-07 09:09 <a href="http://www.blogjava.net/onlykeke/archive/2006/09/07/68172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>filtertable form </title><link>http://www.blogjava.net/onlykeke/archive/2006/09/04/67654.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Mon, 04 Sep 2006 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/09/04/67654.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/67654.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/09/04/67654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/67654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/67654.html</trackback:ping><description><![CDATA[
		<p>在用wicket实现过滤表格中加入表单 这样的功能时，达不到预期效果。非常高兴Igor给出了说明和建议：<br /><br />filter toolbar was not meant to be embedded in another form because it uses a form of its own, so for right now i would say that usecase is not supported. please add an rfe for it.</p>
		<p>if you want one right now then you have to create your own variant that doesnt use an embedded form. it would be pretty much a copy and paste job of the current toolbar but w/out the form. </p>
		<p>-Igor<br /><br />再一次感谢Igor，每次都是这位老大帮我解决相关问题。<br /><a href="http://www.nabble.com/filtertable-and-checkgroup-cannot-work-together-tf2195268.html">http://www.nabble.com/filtertable-and-checkgroup-cannot-work-together-tf2195268.html</a></p>
<img src ="http://www.blogjava.net/onlykeke/aggbug/67654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-09-04 18:57 <a href="http://www.blogjava.net/onlykeke/archive/2006/09/04/67654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设置Wicket资源路径</title><link>http://www.blogjava.net/onlykeke/archive/2006/08/15/63683.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Tue, 15 Aug 2006 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/archive/2006/08/15/63683.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/63683.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/archive/2006/08/15/63683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/63683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/63683.html</trackback:ping><description><![CDATA[[http://blog.csdn.net/wl_95421/archive/2005/09/09/476258.aspx]<br /><br />使用Eclipse的编译输出的include和exclude
<br />不将HTML文件编译到classes下面去
<br /><br />然后写一个自己的Application类,继承WebApplication
<br /><br />public AuthenticateApplication()
<br />	{		
<br />		String t_ClassFolder = AuthenticateApplication.class.getResource("//").getPath();
<br />		Folder t_BaseFolder = new Folder(t_ClassFolder);
<br />		Folder t_Folder = new Folder(t_BaseFolder.getParent() + "\\src\\java\\");
<br />		Path t_Path = new Path(t_Folder);
<br /><br />		// this.getSettings().setResourceFinder(t_Path);
<br />		this.getSettings().setSourcePath(t_Path);
<br /><br />		this.getSettings().setResourcePollFrequency(Duration.ONE_MINUTE);
<br />		// 将\WEB-INF\src\java目录也作为查找Html文件的路径
<br />		// 并每隔每秒检查一次文件是否被修改
<br />		// 如果修改了就重新载入
<br /><br />	}
<br /><br /><img src ="http://www.blogjava.net/onlykeke/aggbug/63683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-08-15 15:08 <a href="http://www.blogjava.net/onlykeke/archive/2006/08/15/63683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>