반응형

개발하면서 카카오톡에서 바로 브라우저 실행하여 인앱브라우저에서 실행하는 경우가 많은데

//탭닫기
self.close()

안 통하므로 카카오톡 스키마를 통해 브라우저를 닫을 수가 있어요.


var os = window.navigator.userAgent || window.navigator.vgjendor || window.opera;
	
if(os.toLocaleLowerCase().indexOf("android") > -1){
		
	location.href = “kakaotalk://inappbrowser/close”;
    
}else if(os.toLocaleLowerCase().indexOf("iphone") > -1 
			|| os.toLocaleLowerCase().indexOf("ipad") > -1){
		
	location.href = "kakaoweb://closeBrowser";
}else{
		
	self.close();
}

위와 같이 안드로이드 아이폰 나눠서 실행하면 인앱브라우저를 닫을 수 있어요.

반응형

'개발 > Web' 카테고리의 다른 글

Thymeleaf each value sum  (2) 2020.12.15
Thymeleaf Layout구성  (2) 2020.12.06
Thymeleaf spring security 사용하기  (5) 2020.12.02
Thymeleaf 문법  (2) 2020.12.01
반응형

오늘은 loop를 돌면서 값 합계를 구해야하는데 th:with를 사용하여 이용을하면 되겠지하여 c:set처럼 사용을 하였습니다.

<th:block th:with="sum=0">
	<th:block th:each="item,status : ${list}">
    	<th:block th:with="sum=sum+item.value">
        	<th:block th:if="${status.last}" th:text="${sum}">
            
            </th:block>
        </th:block>
	</th:block>    
</th:block>

대략 저런 코드였는데 실행을 하였는데 sum이 안되어 이것저것 찾아보게 되었어요 jstl이면 금방되는건데...c:set처럼 block을 벗어나면 값을 호출할수가 없네요

//찾아보니 sum을 할 수 있는 방법이있어서 적용을 하였어요;
#aggregates.sum() 유틸이에요

#aggregates.sum(list.![value]) 이렇게하면 list에 있는 value를 더하여 최종 값을 리턴을 해줘요.

만약 list에서 특정 조건 값만 sum을 하고싶으면 조건을 추가도 가능해요
#aggregates.sum(list.?[type=='user'].![value])

list안에 type이 user인 value값만 sum이되어 최종 값이 리턴이되요.

그러면 위에서 할려던 list안에있는 값을 sum할 수 가 있어요.

Thymeleaf 화면단에서 계산이 힘들어 Server단에서 계산을 할려고했으나 다행이 계산하는 방법이 있어 간단히 해결을 하였어요.

 

Jar 파일안에보니 util class안에 다른 평균도 함수도있네요.

그럼 오늘도 즐 코딩하세요.

반응형

'개발 > Web' 카테고리의 다른 글

카카오톡 인앱브라우저 닫기  (1) 2024.03.25
Thymeleaf Layout구성  (2) 2020.12.06
Thymeleaf spring security 사용하기  (5) 2020.12.02
Thymeleaf 문법  (2) 2020.12.01
반응형

요즘 ThymeThymeleaf을 사용하면 레이아웃을 구성하는 포스팅을 해볼께요.

레이아웃구성

현재 개발중인 화면 레이아웃이에요 PC홈페이지 기준이에요.

 

파일구성

빈페이지,기본페이지,로그인페이지 3가지 버전에 따라 구성을 했어요 지금은 기본페이지 구성을 해볼께요.

default구성이에요
<div class="wrap">
	<!-- header -->
	<header id="header" th:replace="templates/fragments/header :: header">			
	</header>
	<!--// header -->
		
	<!-- breadcrumbs -->
	<div class="breadcrumbs-wrap" th:replace="templates/fragments/breadcrumbs :: breadcrumbs">
	</div>
	<!--// breadcrumbs -->				
				
	<!-- container -->
	<div id="container">
		<div class="inner">
			<!-- section-left -->
			<div class="section-left" th:replace="templates/fragments/left :: left">					
			</div>
			<!--// section-left -->
				
			<!-- contents -->
			<div class="contents" layout:fragment="content">
				contents
			</div>
			<!--// contents -->
		</div>
	</div>
	<!--// container -->
		
	<!-- footer -->
	<div th:replace="templates/fragments/footer :: footer">			
	</div>
	<!--// footer -->
</div>
	
<!-- 공통스크립트 -->
<script th:replace="templates/fragments/script :: script">
</script>

<!-- 페이지스크립트 -->
<th:block layout:fragment="page-script-block">
</th:block>

header(GNB),사이트이동경로표시( breadcrumbs),left(LNB),내용(content),footer.공통스크립트,페이지 스크립트 순서에요

<div id="header" th:fragment="header">

</div>
<div class="section-left" th:fragment="left">

</div>
<div class="breadcrumbs-wrap" th:fragment="breadcrumbs">

</div>
<div class="contents" layout:fragment="content">

</div>
<div id="footer" th:fragment="footer">

</div>

각 구성에 맞게 코딩을해서 구현을 하면되요.

반응형

'개발 > Web' 카테고리의 다른 글

카카오톡 인앱브라우저 닫기  (1) 2024.03.25
Thymeleaf each value sum  (2) 2020.12.15
Thymeleaf spring security 사용하기  (5) 2020.12.02
Thymeleaf 문법  (2) 2020.12.01
반응형

페이지에서 Spring Security를 사용하여 권한별 구조를 바꾸려고 하는 데 사용했던 소스를 적용을 시켰는데 동작을 안 하여 이것저것 살펴봤더니 Config 쪽에 적용이 안 된 부분이 있어 적용을 하였습니다.

<div sec:authorize="hasRole('ROLE_ADMIN')">
  관리자
</div>
@Bean(name = "templateEngine")
public SpringTemplateEngine getTemplateEngine() {
	SpringTemplateEngine templateEngine = new SpringTemplateEngine();

	Set<ITemplateResolver> templatesResolvers = new HashSet<>();
	templatesResolvers.add(getTemplateResolver());
	templateEngine.addDialect(new LayoutDialect());
	templateEngine.setTemplateResolvers(templatesResolvers);
	templateEngine.addDialect(new SpringSecurityDialect());
	return templateEngine;
}

SpringSecurityDialect 클래스를 추가를 해야합니다

Class를 못 찾으면 "Thymeleaf Extras Springsecurity4" Package가 추가안되어있을거에요

 

Thymeleaf Extras Springsecurity4 Maven 링크입니다

 

Maven Repository: org.thymeleaf.extras » thymeleaf-extras-springsecurity4 » 3.0.4.RELEASE

 

mvnrepository.com

현재 프레임워크랑 맞는 버전으로 추가를 하면 SpringSecurityDialect Class가 Import 될 거예요

<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{templates/default-layout}" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">

 xmlns:sec="http://www.thymeleaf.org/extras/spring-security" 네임스페이스 추가하세요

그럼 이제 상단에 적용하려고 했던 소스코드가 동작되는 거 확인되실 거예요.

sec태그 말고 다른방법으로는 아래 방법도 있어요
<div th:if="${#authorization.expression('hasRole(''ROLE_ADMIN'')') ? true : false}">
	관리자
</div>

ROLE을 여러개 적용할경우
<div th:if="${#authorization.expression('hasAnyRole(''ROLE_ADMIN'',''ROLE_ADMIN2'')') ? true : false}">
	관리자
</div>

그럼 Thymeleaf spring security 태그 적용시켜봤어요

반응형

'개발 > Web' 카테고리의 다른 글

카카오톡 인앱브라우저 닫기  (1) 2024.03.25
Thymeleaf each value sum  (2) 2020.12.15
Thymeleaf Layout구성  (2) 2020.12.06
Thymeleaf 문법  (2) 2020.12.01
반응형

프로젝트 중에 사용하던 Thymeleaf문법들을 정리해서 포스팅해볼게요. 중간중간 나오는 데로 여기 계속 업데이트할게요

Thymeleaf IF절
<th:block th:if="${#strings.isEmpty(list.rjctCode)}">
								
</th:block>
<th:block th:unless="${#strings.isEmpty(list.rjctCode)}">

</th:block>

 

Thymeleaf Switch절
<th:block th:switch="${list.status}">
	<th:block th:case="1">
    
    </th:block>
    <th:block th:case="2">
    
    </th:block>
    <th:block th:case="*">
    	
    </th:block>    
</th:block>

 

th:object form태그
<form action="list" name="searchForm" method="get" th:object="${reqFund}">
	
    object에 사용된 model값을 input,radio,select등 여러 태그들 value로 뽑아낼수가 있습니다.
    reqFund에 name이라는 변수가 있다고하면
    
    <input type="text" th:field="*{name}" />    
    <input type="text" name="name" th:value="${reqFund.name}" id="name" />
    
    첫번째 input이랑 두번째 input 소스보기로하면 같은 결과로 나오는걸 확인 할 수가 있어요
    
    field를 이용하여 selectbox radio checkbox등 checked,selected이 필요한 태그들은 field를 사용하면
    편히 값 설정을 할 수 있어요. 단 field를 사용할려면 th:object가 선언한 태그 안에서 사용이 가능해요
</form>

 

Thymeleaf List size 구하기
<tr th:if="${#lists.size(reqFundList) == 0}">
	<td colspan="7">검색된 결과가 없습니다.</td>
</tr>

 

List size체크
<div th:if="${#lists.size(reqfabsFarmlandPredlstInfo.mlsfcCodeList) > 0}">

</div>

 

String equals
<div th:if="${#strings.equals('a','b')}">

</div>

 

html주석을하면 소스보기로 주석이 보이는데 thymeleaf에서 해당주석을 하면 소스보기에서
안보이기때문에 민감한 주석은 해당 언어 주석을 사용하서 안보이게하는게 좋습니다

<!--/* 주석 */-->

몇몇 util설 문법을 적다 보니 org.thymeleaf.util 패키지 밑에 여러 util class들이 있어요. 사용 중에 웬만한 util들은 저기 패키지 밑에 있는 거 같아요. 하나씩 적다 보니 너무 많아질 거 같아서 계속 업데이트 해야되는지 고민이네요

반응형

'개발 > Web' 카테고리의 다른 글

카카오톡 인앱브라우저 닫기  (1) 2024.03.25
Thymeleaf each value sum  (2) 2020.12.15
Thymeleaf Layout구성  (2) 2020.12.06
Thymeleaf spring security 사용하기  (5) 2020.12.02

+ Recent posts