用window.open開啟一個子視窗後
在子視窗進行動作(submit)後想關閉子視窗並重整母視窗
1.需在子視窗submit後導向另一頁面(也在子視窗裡)
2.在另一頁面<head></head>中寫入
<script type="text/javascript">
opener.location.reload(true);
window.close();
</script>
opener.location.reload(true); 重整母視窗
window.close();關閉視窗
不要寫在bady 的onload中 它會在window.close()不斷的onload (原因未查)
※感謝此篇解答
2015年3月18日 星期三
2015年2月24日 星期二
[Bug] javax.persistence.EntityExistsException: a different object with the same identifier value was already associated with the session: [Model Name#index]
出現此Bug為在persistence中有已有一個Primary key相同的物件存在
若該Primary key為自動累加的流水號
需在JPA特別設定
@GeneratedValue(strategy=GenerationType.IDENTITY)
如下:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id",length = 15)
private Integer id;
若該Primary key為自動累加的流水號
需在JPA特別設定
@GeneratedValue(strategy=GenerationType.IDENTITY)
如下:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id",length = 15)
private Integer id;
[MySQL] MySQL保留字 (Reserved Words)
2015年2月9日 星期一
[Bug] java.lang.ClassNotFoundException: org.apache.tiles.web.startup.TilesListener
今天試著不要參考前輩建的環境架構
自己用maven + struts2 + tiles 架出基礎架構
tiles是參考tutorialspoint
結果在裝tiles時遇到了這個Bug
二月 09, 2015 4:31:22 下午 org.apache.catalina.core.StandardContext listenerStart
嚴重: Error configuring application listener of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/TilesListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:529)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:511)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4888)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.tiles.web.startup.TilesListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
... 19 more
原因在於我們在web.xml加了listener
<listener>
org.apache.struts2.tiles.StrutsTilesListener
</listener>
呼叫的是struts2-tiles-plugin這個jar檔的StrutsTilesListener(見圖左下)
但 StrutsTilesListener又extends TilesListener(見圖右)
TilesListener應該要在tiles-core這個jar檔中(文中使用到3.0.5版),但找不到了(見圖左上)

因此
1. struts2-tiles-plugin裡沒有StrutsTilesListener的話請修改到有StrutsTilesListener的版本
應該是2.2.1以上(無求證)
我目前使用過2.3.x 都有
2. tiles-core裡沒有TilesListener請修改tiles-core的版本聽說是2.0.x可使用(無求證)
我目前使用2.0.6
3. 若將tiles-core改成2.0.6後還有其他錯誤,請再檢查tiles-api及tiles-jsp,最好都改成同一版本,因為tiles-core會呼叫tiles-api,轉去jsp頁面時會呼叫tiles-js,它們同一國的!
結論:
採用
struts2-tiles-plugin.2.2.1.jar ↑
tiles-api.2.0.6.jar
tiles-jsp-2.0.6.jar
tiles-core-2.0.6.jar
得出這個結論參考了這裡
自己用maven + struts2 + tiles 架出基礎架構
tiles是參考tutorialspoint
結果在裝tiles時遇到了這個Bug
二月 09, 2015 4:31:22 下午 org.apache.catalina.core.StandardContext listenerStart
嚴重: Error configuring application listener of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/TilesListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:529)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:511)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4888)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.tiles.web.startup.TilesListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
... 19 more
原因在於我們在web.xml加了listener
<listener>
org.apache.struts2.tiles.StrutsTilesListener
</listener>
呼叫的是struts2-tiles-plugin這個jar檔的StrutsTilesListener(見圖左下)
但 StrutsTilesListener又extends TilesListener(見圖右)
TilesListener應該要在tiles-core這個jar檔中(文中使用到3.0.5版),但找不到了(見圖左上)
因此
1. struts2-tiles-plugin裡沒有StrutsTilesListener的話請修改到有StrutsTilesListener的版本
應該是2.2.1以上(無求證)
我目前使用過2.3.x 都有
2. tiles-core裡沒有TilesListener請修改tiles-core的版本聽說是2.0.x可使用(無求證)
我目前使用2.0.6
3. 若將tiles-core改成2.0.6後還有其他錯誤,請再檢查tiles-api及tiles-jsp,最好都改成同一版本,因為tiles-core會呼叫tiles-api,轉去jsp頁面時會呼叫tiles-js,它們同一國的!
結論:
採用
struts2-tiles-plugin.2.2.1.jar ↑
tiles-api.2.0.6.jar
tiles-jsp-2.0.6.jar
tiles-core-2.0.6.jar
得出這個結論參考了這裡
2015年2月4日 星期三
[C#] reportViewer動態切換rdlc
還是一篇鳥蛋教學
請小心服用
若是要按某個按鈕後將reportViewer換成另一個rdlc(連dbDataSet一起換掉)
則在Click方法中寫入
比較重要的是要
1.reset reportViewer
2.塞新的rdlc路徑給reportViewer
若你的DataSource是BeanList
可以參考這篇
請小心服用
若是要按某個按鈕後將reportViewer換成另一個rdlc(連dbDataSet一起換掉)
則在Click方法中寫入
// 這裡Reset reportViewer除了斷開(?)它和rdlc檔的連結,還有資料來源(dbDataSet/DataSources)的連結 reportViewer1.Reset(); // 如果是使用TableAdapters則在這裡定義 dbDataSetTableAdapters.userinfoTableAdapter ds = new dbDataSetTableAdapters.userinfoTableAdapter(); // 取得TableAdapters資料並塞成DataTable(有助於你要把它塞成資料集時系統好辦視型態) DataTable dt = ds.GetData(); // 將要指定給reportViewer的rdlc路徑給它 // 使用ReportEmbeddedResource後rdlc名稱寫成專案名稱.XXX.rdlc即可不用寫完整路徑 reportViewer1.LocalReport.ReportEmbeddedResource = "Demo.Report2.rdlc"; // 指定資料集,名稱需與rdlc中的相同 reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt)); reportViewer1.RefreshReport();
比較重要的是要
1.reset reportViewer
2.塞新的rdlc路徑給reportViewer
3.因為reset後DataSources也會清空也要塞新的DataSource(就不一定是TableAdapter
4. Refresh reportViewer若你的DataSource是BeanList
可以參考這篇
訂閱:
文章 (Atom)