以往开发记录

oracle 里一件很白癡的事情:
列名長度 大于 該列限制長度時->報錯ORA-06502: PL/SQL: 数字或值错误: 字符串缓冲区太小

 

用h:panelGrid 可以代替 html 中的 table 

 

window.showModalDialog('ViewUserFrame.faces',window,'dialogHeight:400px;dialogWidth:400px;help:no;status:no');
和   window.open(); 的區別.

 

root.jsp 綁定 viewReq.java

      viewReq.java 中獲得 httpRequest 中的相關值;
public String getFirstSignerNo() {
HttpServletRequest httpServletRequest = AppContext.getRequest();
if(httpServletRequest.getParameter("firstSignerNo")!=null && httpServletRequest.getParameter("firstSignerName")!=null)
{
firstSignerNo = httpServletRequest.getParameter("firstSignerNo");
}
return firstSignerNo;
}

 

viewUser.jsp:
   
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/html_basic.tld" prefix="h" %>
<%@ taglib uri="/WEB-INF/jsf_core.tld" prefix="f" %>
<%@ taglib uri="/WEB-INF/tomahawk.tld" prefix="t"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<SCRIPT language="javascript" src="Js/camauto.js"></SCRIPT>
<SCRIPT language="javascript">
function SetReturnValue(webuserNo,webuserName)
{
var rArray = new Array(webuserNo,webuserName);
window.parent.returnValue = rArray;
window.parent.close();
}
function showMsg()
{
outMsg.innerHTML="<B>Loading...</B>";
}
</SCRIPT>
<title>Data</title>
<link rel="stylesheet" type="text/css" href="Css/camauto.css">
</head>

<body>
<f:view locale="#{selLanguage.language}">
<f:loadBundle var="msg" basename="org.hz.ims.international.messages"/>
<h:form id="viewHrmUserForm">
<div style="width:300pt;height:100pt;float:center">
<DIV style="width:240pt;float:left;text-align:left">
<h:outputText value="工號:"/>
<h:inputText value="#{viewHrmUser.userInfo}" οnblur="upperCase(this)" styleClass="showbottom" size="10"/>
<h:commandButton value="確定" action="#{viewHrmUser.findUser}" οnclick="showMsg()"/>
</DIV>
<div style="WIDTH:30pt;float:left;text-align:center">
<LABEL id="outMsg"></LABEL>
</div>
<div style="width:300pt;float:left;text-align:left">
<h:panelGroup>
<t:dataTable
id="hrmUserDataTable" width="100%" border="1"
cellpadding="0" cellspacing="0"
headerClass="standardTable_Header" footerClass="standardTable_Header"
rowClasses="standardTable_Row1,standardTable_Row2" columnClasses="standardTable_Column"
var="var" value="#{viewHrmUser.userList}"
preserveDataModel="false" varDetailToggler="detailToggler">
<h:column>
<f:facet name="header">
<h:outputText value="序號"/>
</f:facet>
<t:outputText οnclick="SetReturnValue('#{var.employeeid}','#{var.fullname}')" value="#{detailToggler.rowIndex+1}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="工號"/>
</f:facet>
<t:outputText οnclick="SetReturnValue('#{var.employeeid}','#{var.fullname}')" value="#{var.employeeid}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="姓名"/>
</f:facet>
<t:outputText οnclick="SetReturnValue('#{var.employeeid}','#{var.fullname}')" value="#{var.fullname}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="部門"/>
</f:facet>
<t:outputText οnclick="SetReturnValue('#{var.employeeid}','#{var.fullname}')"  value="#{var.departmentname}"/>
</h:column>
</t:dataTable>
</h:panelGroup>
</div>
</div>
<div style="width:350pt;float:left;text-align:left">
<table width="350" border="1">
  <tr>
  <th width="150" ><p style="font-size:12px;height:10px">查詢方式</p></th>
    <th width="200"  scope="col">
      <t:selectOneRadio value="#{viewHrmUser.findMethod}" forceId="true" id="selFindMethod" style="height:10px">
      <f:selectItem itemValue="ensureFind" itemLabel="精確查詢"/><br>
      <f:selectItem itemValue="faintFind" itemLabel="模糊查詢"/>
      </t:selectOneRadio>
</th>
  </tr>
  <tr>
  <th width="150"  ><p style="font-size:12px;height:10px">人員屬性</p></th>
    <th width="200"  scope="col">
        <h:selectOneMenu value="#{viewHrmUser.findBy}" style="height:10px;width:20">
        <f:selectItem itemValue="findByUserNo" itemLabel="按工號查詢" /><br>
        <f:selectItem itemValue="findByUserName" itemLabel="按姓名查詢"/><br>
        </h:selectOneMenu>
    </th>
  </tr>
</table>
</div>
</h:form>
</f:view>
</body>
</html>

 

 

viewUserFrame.jsp:
    <%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Data</title>
</head>

<frameset rows="0,*" frameborder="NO" border="0" framespacing="0" cols="*">
  <frame src="about:blank">
  <frame src="ViewUser.faces">
</frameset>
</html>

 

root.jsp :
    <th scope="col"><t:commandLink οnclick="getFirstSigner();" value="初核" action = ""><t:graphicImage value="Img/person.png"/></t:commandLink></th>
    js:
function getFirstSigner()
{
var rValue = window.showModalDialog('ViewUserFrame.faces',window,'dialogHeight:400px;dialogWidth:400px;help:no;status:no');
if(rValue!=null)
{
ItServiceApplyForm.firstSignerNo.value = rValue[0];
ItServiceApplyForm.firstSignerName.value = rValue[1];
ItServiceApplyForm.submit();
}
}

 

 

 

使用jsf中的时间控件

<t:inputCalendar value="#{req.reqShow.reqNdate}" renderAsPopup="true" popupLeft="true" renderPopupButtonAsImage="true" styleClass="showbottom"
popupButtonStyle="cursor:hand" popupButtonImageUrl="Img/camauto_datetime.gif" forceId="true" id="btime" title="YYYY/MM/DD">
<f:convertDateTime pattern="yyyy/MM/dd"/>
</t:inputCalendar>

 

hibernate  OR
1 Assigned 主鍵由應用邏輯產生  數據交由 Hibernate 保存時,主鍵已經設置完畢。
2 hilo  通過hi/lo算法實現的主鍵生成機制需要額外的數據庫表保存主鍵生成歷史狀態
3 seqhilo 與hilo類似 只是主鍵歷史狀態保存在Sequence中,適合oracle
4 increment 主鍵按數值瞬息遞增,此方式的實現機制為在當前應用實力中維持一個變量,以保存當前最大值
5 identity  采用數據庫提供的主鍵生成機制
6 sequence 采用數據庫提供的sequence機制
7 native 由hibernate 根據數據庫適配器中的定義,自動采用identity hilo sequence 的其中一種主鍵生成方式
8 uuid.hex 由hibernate 基于128位唯一值產生算法,根據當前設備ip 時間 jvm啟動時間  內部自增量等4個參數生成32位字符串表示
9 uuid.string   長度16位
10 foreign 使用外部表的字段作為主鍵。

 

 

<SCRIPT language="javascript" src="Js/camauto.js"></SCRIPT>
<SCRIPT language="javascript">
function showMsg(Msg)
{
outMsg.innerHTML=Msg;
}
function resets()
{
usersForm.reset();
}
function rstMenu()
{
usersForm.menuAll.checked=false;
usersForm.menuToRoleAll.checked=false;
}
function rstMTR()
{
usersForm.menuToRoleAll.checked=false;
}
function delAsk()
{
if(confirm("確定要刪除嗎?"))
return true;
else
return false;
}
function savAsk()
{
if(confirm("確定要保存嗎?"))
return true;
else
return false;
}
function checkQueryByUsers()
{
if(document.forms['usersForm']['QueryDataByUser']!=undefined && document.forms['usersForm']['QueryDataByUser'].value=='')
{
alert('用戶編號為空﹗');
return false;
}
else
return true;
}
</SCRIPT>
<SCRIPT language="javascript">
function selCamaMenutoroleAll()
{
for(var i=0;i<usersForm.elements.length;i++)
{
if(usersForm.elements[i]!=undefined && usersForm.elements[i].type=="checkbox" && usersForm.elements[i].name.indexOf("CheckboxMToR")==0)
usersForm.elements[i].checked = usersForm.menuToRoleAll.checked;
}
}
</SCRIPT>
<SCRIPT language="javascript">
function selCamaMenuAll()
{
for(var i=0;i<usersForm.elements.length;i++)
{
if(usersForm.elements[i]!=undefined && usersForm.elements[i].type=="checkbox" && usersForm.elements[i].name.indexOf("CheckboxMenu")==0)
usersForm.elements[i].checked = usersForm.menuAll.checked;
}
}
</SCRIPT>

 

 

注意java中的别名现象。

obj1 = obj2;
obj1.c = 2;
obj2.c也被改为2.
obj1和obj2是属于相同的引用。

 

linkList  和  ArrayList  用起来有些区别。

使用前要分析该使用哪个。
List<ImsOptrole> optroleList = new ArrayList<ImsOptrole>();
ImsOptroleDAO imsOptroleDAO = (ImsOptroleDAO)AppContext.getBean(AppContext.Ims_OPTROLE_DAO);
optroleList = imsOptroleDAO.findByOrOpt(imsOperation.getOptNo());
ImsRole optHasRole  = new ImsRole();
Iterator optListItr = optroleList.iterator();
while(optListItr.hasNext())
{
optHasRole = imsRoleDAO.findById(((ImsOptrole)optListItr.next()).getOrRole());
optNotHasRoleList.remove(optHasRole);
optHasRoleList.add(optHasRole);
}
List<ImsOptrole> optroleList = new ArrayList<ImsOptrole>();
ImsOptroleDAO imsOptroleDAO = (ImsOptroleDAO)AppContext.getBean(AppContext.Ims_OPTROLE_DAO);
optroleList = imsOptroleDAO.findByOrOpt(imsOperation.getOptNo());
ImsRole optHasRole = new ImsRole();
Iterator optListItr = optroleList.iterator();
while(optListItr.hasNext())
{
optHasRole = imsRoleDAO.findById(((ImsOptrole)optListItr.next()).getOrRole());
optNotHasRoleList.remove(optHasRole);
optHasRoleList.add(optHasRole);
}
List<ImsOptrole> optroleList = new ArrayList<ImsOptrole>();
ImsOptroleDAO imsOptroleDAO = (ImsOptroleDAO)AppContext.getBean(AppContext.Ims_OPTROLE_DAO);
optroleList = imsOptroleDAO.findByOrOpt(imsOperation.getOptNo());
ImsRole optHasRole ;
Iterator optListItr = optroleList.iterator();
while(optListItr.hasNext())
{
optHasRole = imsRoleDAO.findById(((ImsOptrole)optListItr.next()).getOrRole());
optNotHasRoleList.remove(optHasRole);
optHasRoleList.add(optHasRole);
}
//排序并删除相同的Menu
if(roleToMenu.size()>0)
{
ImsMenutorole[] imsMenutoroles = new ImsMenutorole[roleToMenu.size()];
roleToMenu.toArray(imsMenutoroles);
Arrays.sort(imsMenutoroles,byMenuNo);
roleToMenu = new ArrayList<ImsMenutorole>();
for(int i=0;i<imsMenutoroles.length;i++)
{
roleToMenu.add((ImsMenutorole)imsMenutoroles[i]);
}
}
//刪除相同
int SIZE = roleToMenu.size() - 1;
if(SIZE >= 2)
{
int i = 0;
int r = 0;
while(i+r < SIZE )
{
System.out.print(i+"------"+r);

if(roleToMenu.get(i).getImsMenu().getMenuNo().equals(roleToMenu.get(i+1).getImsMenu().getMenuNo()))
{
roleToMenu.remove(i);
++r;
System.out.print("remove i   "+ i);
System.out.print("remove r   "+ r);
}
else
{
System.out.print("noremove i   "+ i);
System.out.print("noremove r   "+ r);
++i;
}
}
}
}


private static Comparator byMenuNo = new Comparator()
{
public int compare(Object left, Object right)
{
ImsMenutorole imsElectrodeLeft = (ImsMenutorole)left;
ImsMenutorole imsElectrodeRight = (ImsMenutorole)right;
if(imsElectrodeLeft.getImsMenu().getMenuNo()==null)
{
return -1;
}
if(imsElectrodeRight.getImsMenu().getMenuNo()==null)
{
return 1;
}
return imsElectrodeLeft.getImsMenu().getMenuNo().compareTo(imsElectrodeRight.getImsMenu().getMenuNo());
}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值