http://mugifly.github.io/jquery-simple-datetimepicker/

https://github.com/mugifly/jquery-simple-datetimepicker/blob/master/jquery.simple-dtpicker.html

http://mugifly.github.io/jquery-simple-datetimepicker/jquery.simple-dtpicker.html

----

$(function() {

$('#to').change(function() {

  $('#from').appendDtpicker({

    "autodateOnStart": false, // 달력 초기값 주지 않기

    maxDate: $('#to').val(),

"locale": "kr",

 "dateOnly": true,

   });

});

$('#from').change(function() {

   $('#to').appendDtpicker({

    "autodateOnStart": false,

    minDate: $('#from').val(),

"locale": "kr",

"dateOnly": true,

   });

});


$('#from').trigger('change');

$('#to').trigger('change');

});


1. 현재 dtpicker가 적용되어있는 text의 날짜 값 가져오기

var time = $('#from').handleDtpicker('getDate');


2. 시작 날짜와 끝 날짜 비교하기

function diffDays() {

var start = $('#from').handleDtpicker('getDate');

var end = $('#to').handleDtpicker('getDate');

var diff = new Date(end - start);

if(!start || !end)

return;

var days = diff/1000/60/60/24;

return days;    // 이 값으로 판정해주면 된다(음수면 끝 날짜 값이 더 큰 것임.)

}

'JQuery' 카테고리의 다른 글

[JQuery] radio 값 설정, 가져오기  (0) 2014.08.01
Posted by 스트라
,

fn:split 과 fn:length를 적절히 이용하면 lastIndexOf의 기능을 할 수 있다.


자르고 싶은 문자열

"/upload/filename.jpg"


<c:set var="fileName" value="${fn:split(bean.file, '/')}" />

split을 이용하여 문자 / 를 기준으로 문자열을 나누어서 fileName에 배열 형식으로 넣는다.


${fileName[fn:length(fileName)-1]}

fileName의 length-1을 하여 마지막 배열의 값을 가져온다.

Posted by 스트라
,

http://blog.whitelife.co.kr/entry/SVN-%ED%8C%8C%EC%9D%BC-%EC%B6%A9%EB%8F%8C-%EC%8B%9C-%ED%95%B4%EA%B2%B0-%ED%95%98%EA%B8%B0


충돌 나는 파일이 있으면 일단 Synchronize with Repository를 이용해서 저장소의 파일과 내 파일의 차이점을 파악한다.

눈으로 보고 직접 수정을 하되 복잡하고 힘이 들면 작업자에게 도움을 요청한다.

차이점이 별로 없고 작업할 것이 없다 하면 Revert를 한다.


차이점이 없는데도 뭔가 오류(conflict)때문에 커밋, 업데이트가 안된다면

Override and Commit

Override and Update

이것을 사용하자. 하지만 저장소에 덮어씌우거나, 자신이 작업하는것에 덮어씌우는 것이기 때문에 하기 전에 신중하게 생각 후 하자. 훅 간다.

Posted by 스트라
,

뭔가 조금 건드린 것 같은데 자꾸 이런 오류가 뜨는 것이다


org.apache.el.parser.ParseException: Encountered " "}" "} "" at line 1, column 3.

Was expecting one of:

    <INTEGER_LITERAL> ...

    <FLOATING_POINT_LITERAL> ...

    <STRING_LITERAL> ...

    "true" ...

    "false" ...

    "null" ...

    "(" ...

    "!" ...

    "not" ...

    "empty" ...

    "-" ...

    <IDENTIFIER> ...



아씨.. 대체 뭐지... 검색을 시작했다.

http://stackoverflow.com/questions/17026849/org-apache-el-parser-parseexception-encountered-at-line-1-column-3

나와 같은 오류를 가진게 아닌가!

답변을 보았다.

---

This is an EL syntax error. It says that it encountered a } while it was expecting one of the listed identifiers or keywords.

This is most likely caused by the following line:

<!--  <h:commandButton value="Change text" actionListener="#{}" /> -->

The #{} is indeed an invalid EL expression.

---

음.. 문법 오류라구? 음? #{} ?? 아 이런!!!!!

function download(seq){

var f = document.f;

//f.seq.value = seq;

//f.action = "/download.do?seq=${}";

f.submit();

}


주석 처리했다고 방심을 했다.

웹 브라우저에서 html, jsp 파일의 주석을 처리하기 전에 웹서버에서 코드 내에 존재하는 jstl을 처리한다.

그때 문법 에러가 발견되기 때문에 웹 브라우저에 화면이 뜨기 전에 웹서버의 오류가 뜨는 것이다.

Posted by 스트라
,

fn:contains(string, sbustring) 

string이 substring을 포함하면 return True 


fn:containsIgnoreCase(string, sbustring) 

대소문자 관계없이 string이 substring을 포함하면 return True 


fn:endsWith(string, suffix) 

string이 suffix로 끝나면 return True 


fn:escapeXml(string) 

stting에 XML과 HTML에서 특별한 의미를 가진 문자들이 있으면,

XML엔티티 코드로 바꿔준뒤 문자열 반환 


fn:indexOf(string, sbustring)

 string에서 substring이 처음으로 나타나는 인덱스 반환 


fn:join(array, separator) 

array요소들을 separator를 구분자로 하여 연결해서 반환 


fn:length(item) 

item이 배열이나 컬렉션이면 요소의 객수를 문자열이면 문자의 객수를 반환 


fn:replace(string, before, after) 

string내에 있는 before 문자열을 after 문자열로 모두 변경해서 반환 


fn:split(string, separator) 

string내의 문자열 separetor에 따라 나누어서 배열로 구성해서 반환 


fn:startsWith(string, prefix) 

string이 prefix로 시작하면 return True 


fn:substring(string, begin, end) 

string에서 begin인덱스에서 시작해서 end인덱스에 끝나는 부분의 문자열 반환 


fn:substringAfter(string, sbustring) 

string에서 substring이 나타나는 이후의 문자열 반환 


fn:substringBefore(string, sbustring) 

string에서 substring이 나타나는 이전의 문자열 반환 


fn:toLowerCase(string) 

string을 모두 소문자로 바꿔 리턴 


fn:toUpperCase(string) 

string을 모두 대문자로 바꿔 리턴 


fn:trim(string) 

string앞뒤의 공백을 모두 제거하여 반환


=================================================

2010-12-25

${fn:substring(bean.mem_bir, 0, 4) } = 2010
${fn:substring(bean.mem_bir, 5, 7) } = 12
${fn:substring(bean.mem_bir, 8, 10) } = 25


thdnf1004@nate.com

${fn:substringBefore(bean.mem_mail, '@') } = thdnf1004

${fn:substringAfter(bean.mem_mail, '@') } = nate.com 

Posted by 스트라
,

'Spring Framework' 카테고리의 다른 글

log4jdbc-remix 설정  (0) 2014.08.01
jstl fn 문자열 함수  (0) 2014.07.28
페이징  (0) 2014.07.16
[Mybatis] XML 파일에 부등호 포함 쿼리 넣을 때 주의점.  (0) 2014.07.07
페이징 로직  (0) 2014.07.07
Posted by 스트라
,

페이징

Spring Framework 2014. 7. 16. 18:05

페이징에 필요한 요소

pageNo

현재 페이지


limitList

한 페이지당 보여줄 글의 개수


block

현재 페이지의 블럭

ex. 현재 페이지가 20페이지면 블럭은 두번째 블럭

[11][12][13][14][15][16][17][18][19][20] <- 2번째 블럭


limitPage

한 블럭에 보여줄 페이지의 개수


totalCount

총 레코드의 개수


페이징 하기

현재 상태

pageNo = 1;

block = 1;

totalCount = 100;

limitList = 10;

limitPage = 10;


1. 현재 페이지에서 현재 블럭 구하기

block = ceil(pageNo/limitPage);

* ceil 올림 함수

2. 현재 블럭의 시작 페이지와 끝 페이지

// 시작 페이지 - 1블럭일때 1, 2블럭일때 11

startPage = (block-1)*limitPage + 1;

// 끝 페이지 - 마지막 블럭에서 페이지가 총 페이지 수 보다 커지면 안됨

endPage = startPage + limitPage - 1;

if(endPage > totalPage) endPage = totalPage;

3. 총 페이지 수 구하기

totalPage = ceil(totalCount/limitList);

4. 페이지 출력하기

for (i = startPage; i <= endPage; i++) {

if(pageNo == i) i //진하게 출력하기

else i    // 나머지들은 그냥 출력

}

5. 블럭 이동

[prev] 1 2 3 4 5 6 7 8 9 10 [next]

// 현재의 블럭이 최소 블럭인지 검사

if(block <= 1) "";

else [prev];

// 현재의 블럭이 마지막 블럭인지 검사

totalBlock = ceil(totalPage/limitPage);

if(block >= totalBlock) "";

else [next];

6. DB에서 가져오기

select * from board order by no desc limit start, limitList;

// startRow와 limitList를 설정해 주어야함.

startRow = (page -1) * limitList;


가상 글 번호 뿌려주기

<c:forEach items="${board_list}" var="list" varStatus="status">

<c:out value="${총글개수-((현재페이지번호-1)*페이지당글개수+status.index)}"</c:out>

</c:forEach>


출처 : http://freesearch.pe.kr/archives/21

'Spring Framework' 카테고리의 다른 글

log4jdbc-remix 설정  (0) 2014.08.01
jstl fn 문자열 함수  (0) 2014.07.28
스마트 에디터  (0) 2014.07.22
[Mybatis] XML 파일에 부등호 포함 쿼리 넣을 때 주의점.  (0) 2014.07.07
페이징 로직  (0) 2014.07.07
Posted by 스트라
,

XML 파일에 부등호를 포함한 쿼리를 넣을 때 에러가 발생한다.

The content of elements must consist of well-formed character data or markup.

쿼리를 <![CDATA[]]> 내에 쓰면 해결 된다.

ex) 

<select id="select_board_list" parameterType="map" resultType="kr.co.kkh.model.BoardBean" >

select * from table_name

where

column_name1 < 10    에러 발생

</select>

해결:

<select id="select_board_list" parameterType="map" resultType="kr.co.kkh.model.BoardBean" >

select * from table_name

where

<![CDATA[ column_name1 < 10 ]]>

</select>


혹은


<select id="select_board_list" parameterType="map" resultType="kr.co.kkh.model.BoardBean" >

select * from table_name

where

column_name1 &lt; 10

</select>

&gt; (>),  &lt; (<) 도 사용 가능하다

'Spring Framework' 카테고리의 다른 글

log4jdbc-remix 설정  (0) 2014.08.01
jstl fn 문자열 함수  (0) 2014.07.28
스마트 에디터  (0) 2014.07.22
페이징  (0) 2014.07.16
페이징 로직  (0) 2014.07.07
Posted by 스트라
,

리스트에서 빠질 수 없는게 페이징 시스템입니다…

[1][2][3][4][5][6][7][8][9][10]

위와 같은 페이지를 누름으로써 그에 대한 리스트만 출력하는 것이지요…

이렇게 하는 이유는 전체의 리스트를 화면에 다 보여준다면 빨리 찾을 수도 없고

속도 또한 느립니다. 그래서 페이지로 구분해놓으면 찾아가기 싶게 됩니다..

여기서는 가장 기본적인 개념으로 페이징 시스템을 구현하겠습니다….

방법은 여러가지니깐 여러 각도로 시도해보는 것도 좋을 듯 합니다….

페이징 시스템에서 필요로 하는 것이

1. 현재 페이지

2. 현재 페이지의 블럭

(블럭은 페이지가 속해있는 그룹입니다. 예를 들어서 한 블럭에는 10페이지가 들어가는데 현재의

페이지가 20 페이지 라면 블럭은 두번째 블럭으로 선택이 됩니다.. 그럼 표시는

[11][12][13][14][15][16][17][18][19][20] 으로 되겠죠…

이렇게 하는 이유는 페이지 또한 무한히 많을 수 있기 때문에 페이지 자체의 페이징 시스템을

만드는 거죠. 그것이 블럭입니다. )

3. 전체 행의 개수

(이것을 알아야지만 현재 페이지가 속해 있는 블럭을 계산 할 수 있습니다. )

4. 현재 페이지의 블럭에서 시작페이지와 끝 페이지

(숫자 더하기, 빼기 계산만 하면 되기 때문에 특별한 건 없습니다.)

5. 한 페이지에 보여질 리스트 수 (limitList)

한 블럭에 보여질 페이지 수 (limitPage)

(위의 두가지가 있어야지 전체적인 계산이 됩니다… ^^ )

이상 위의 다섯가지로 일단은 페이지 시스템에 대해서 보여지는 것이 가능하구여

이제 가상으로 페이징 시스템을 만들어 보겠습니다…

1. 현재의 페이지 : 1페이지

2. 현재의 블럭 : 1블럭

3. 전체 행의 개수(total) : 100

4. limitList : 10, limitPage : 5

이렇게 네개의 구성요소로서 시작을 합니다….

리스트가 젤 처음 보여질 때 페이징 시스템은 1블럭의 1페이지를 가리키고 있어야 합니다..

1. 현재 페이지에서 현재 블럭구하는 방법

block=ceil(page/$limitPage);

=> ceil 함수는 만약 숫자가 4.5라고 하면 올림을 하여 5가 되게 하는 함수입니다.

2. 현재 블럭의 시작 페이지와 끝 페이지

// 현재 블럭이 1블럭이라면 1이지만 2 블럭일때는 11이 되어야 합니다

startPage=(block-1)*$limitPage + 1;

// 마지막 블럭에서 페이지가 총페이지 수 보다 커지면 안되기 때문에

// 미리 총 페이지 수를 구해서 큰지 확인해줍니다.

endPage=startPage + $limitPage – 1;

if (endPage>totalPage ) endPage=totalPage;

3. 총 페이지 수 구하는 방법

totalPage=ceil(total/$limitList);

4. 그럼 페이징 시스템을 출력하는건 간단하죠…

for (i=startPage; i<=endPage; $i++)

{

if (page==i) echo “[$i]“;

else echo “[$i]“;

}

현재 페이지는 찐하게 표시해줍니다. 그럼 기본적인 페이지 표시 시스템이 끝이 납니다.

설마 여기서 끝내는건 아니겠죠.. ^^

아까 블럭이란걸 만들었기 때문에 블럭 자체도 이동할 수가 있어야 겠습니다..

보통 게시판에 보면 ◀, ▶ 이런 화살표로 표시 되거나 prev, next 라는 말로 표시되거나 합니다.

[prev] 1 2 3 4 5 6 7 8 9 10 [next]

그래서 블럭을 옮길 수 있게 됩니다..

1. 현재의 블럭이 어딘지 알고 그 앞에 블럭이 있는지 뒤에 블럭이 있는지를 계산해서 표시합니다

현재 블럭은 위에서 구했기 때문에 넘어가구여

// 현재의 블럭이 앞에 있는 아닌지 검사

if ($block <= 1) echo "";

else echo “[prev]“;

// 위의 페이징 시스템 표시

// 마지막 블럭인지 아닌지 검사

totalBlock=ceil(totalPage/$limitPage);

if (block>=totalBlock) echo ” “;

else echo ["next"];

위와 같이 쉽게 구할 수 있습니다. 이건 완전히 산수네요.. ㅋㅋㅋ

이제 페이징 시스템의 마지막 단계가 남았습니다..

디비 관련 작업입니다.. ^^

정렬한 것에 대해서 그 페이지에 맞는 내용을 가져와야 하기 때문에

여기서는 디비 쿼리 명령중 limit라는게 사용됩니다.

예 : select * from test order by groupNum desc, listNum asc limit start,limitList;

젤 마지막에 변수 두개만 설정 해주면 되는데요,,

두가지 옵션은 처음에는 시작되는 row의 번호구여, 뒤에꺼는 몇개를 얻어올껀지 입니다

0, 5 하면 0번째에서 5개행을 얻어온다는 소리하고 같죠.. ^^

마지막 $limitList는 아까 위에 있는 변수랑 같은 거기 때문에 그 대로 주시면 되구여

$start만 계산하면 됩니다..

계산하는 방법은 1페이지 일때 1에서 10, 2 페이지 일때 11에서 20 이런식으로 된다면

디비에서 row는 0부터 시작하기 때문에 0에서 9, 10에서 19 이런식으로 됩니다. 하나 작죠.. ^^

그럼 어떻게 계산을 하느냐…

(page1)limitList;

어디서 많이 본 공식인데..ㅋㅋ 저위에 보면 블럭의 시작페이지 구하는 공식하고 비슷한데

+1 이 빠졌네요 .. 왜 그렇냐면 1씩 작으니깐요.. ^^ 그래서 +1을 해 줄 필요가 없죠….

그래서

select * from test order by groupNum desc, listNum asc limit 0, 10;

하면 0번째 행에서 10개의 행을 얻어오는것이니 바로 리스트에 적용할 수 있겠죠..

리스트 화면에서는 이것에 대한 처리만 해주면 되구여… ^^

약간씩 복잡해 보일 수도 있지만 실상은 더하기 빼기밖에 없네요.. ^^

우리 모두 게시판을 누워서 떡 먹듯 다루는 그 날까지.. 화이팅.. ^^

ps . 예전에 개발해본적이 있는데 jsp로 다시 할라니 조금 헤멧넹…
암튼 이런 자주 사용하는 로직은 정리가 필수다..


출처 : http://freesearch.pe.kr/archives/21

'Spring Framework' 카테고리의 다른 글

log4jdbc-remix 설정  (0) 2014.08.01
jstl fn 문자열 함수  (0) 2014.07.28
스마트 에디터  (0) 2014.07.22
페이징  (0) 2014.07.16
[Mybatis] XML 파일에 부등호 포함 쿼리 넣을 때 주의점.  (0) 2014.07.07
Posted by 스트라
,
public abstract interface BoardDao {
	//게시판 리스트 get
	public List select_board_list(String id);
	
	//게시글 get
	public BoardBean select_board_view(int no);
	
	//게시판 insert
	public int insert_board(BoardBean boardBean);
	
	//게시판 update
	public int update_board(BoardBean boardBean);
	
	//게시판 delete
	public int delete_board(int no);

	//게시판 검색(모든 조건)
	public List search_board_list_all(@Param("board_no") String board_no, @Param("s_text") String s_text);

	//게시판 검색(글 제목 조건)
	public List search_board_list_title(@Param("board_no") String board_no, @Param("s_text") String s_text);

	//게시판 검색(글 내용 조건)
	public List search_board_list_contents(@Param("board_no") String board_no, @Param("s_text") String s_text);

}
brush 속성들 SyntaxHighlighter.autoloader.apply(null, path( 'applescript @shBrushAppleScript.js', 'actionscript3 as3 @shBrushAS3.js', 'bash shell @shBrushBash.js', 'coldfusion cf @shBrushColdFusion.js', 'cpp c @shBrushCpp.js', 'c# c-sharp csharp @shBrushCSharp.js', 'css @shBrushCss.js', 'delphi pascal @shBrushDelphi.js', 'diff patch pas @shBrushDiff.js', 'erl erlang @shBrushErlang.js', 'groovy @shBrushGroovy.js', 'java @shBrushJava.js', 'jfx javafx @shBrushJavaFX.js', 'js jscript javascript @shBrushJScript.js', 'perl pl @shBrushPerl.js', 'php @shBrushPhp.js', 'text plain @shBrushPlain.js', 'py python @shBrushPython.js', 'ruby rails ror rb @shBrushRuby.js', 'sass scss @shBrushSass.js', 'scala @shBrushScala.js', 'sql @shBrushSql.js', 'vb vbnet @shBrushVb.js', 'xml xhtml xslt html @shBrushXml.js' ));
Posted by 스트라
,