페이스북SDK는 비동기 방식이다


FB.login 로그인 메서드를 사용할때


FB.getLoginStatus를 먼저 체크하고 FB.login 을 사용하면 익스플로러에서는 반응을 못한다.(크롬에선 가능, 사파리 되따가안됬따가)


그래서


// 로그인만

   FB.login(function(response) {

    // 페북 로그인 상태 확인 connected. 사용자가 Facebook에 로그인하고 앱에 로그인

    // not_authorized. 사용자가 Facebook에 로그인했지만 앱에 로그인 안함

        console.log(response);

        //statusChangeCallback(response);

            var data = {

            accessToken : response.authResponse.accessToken,

            user_id : response.authResponse.userID,


            }

            fn_login(data);


            if (response.status != 'connected') {

            return ;

            }

        }, {scope: 'public_profile'});


로그인만 사용하던가 아니면 로그인후 getLoginStatus 를 체크 하면된다.


// 로그인 후 상태 체크

// 페북 로그인

    FB.login(function(response) {

        

    // 페북 로그인 상태 확인 connected. 사용자가 Facebook에 로그인하고 앱에 로그인

    // not_authorized. 사용자가 Facebook에 로그인했지만 앱에 로그인 안함

        FB.getLoginStatus(function(response) {

        // 콜백 connected 이면 공유 팝업 실행

//            statusChangeCallback(response, sharePopup(href, hp_id));

            console.log("FB.login: " + response);

            console.log(hp_id);

            if (response.status != 'connected') {

            return false;

            }

        });

    }, {scope: 'public_profile'});



etc..


//페북 로그인 상태 콜백

function statusChangeCallback(response) {

  if (response.status === 'connected') {


  } else if (response.status === 'not_authorized') {

      alert("로그인해야 이용가능한 기능입니다.");

  } else {

      alert("로그인해야 이용가능한 기능입니다.");

  }

}


//공유하기

FB.ui(

{

method:'share',

href : url,

},function(response) {

//공유결과 리턴

console.log(response)

if(response === null || response == undefined) {

console.log('공유안함');

} else {

console.log('공유완료');


}

 

});


'Programming > javascript' 카테고리의 다른 글

IOS safari 세션 문제  (0) 2017.01.25
[javascript] 엘리먼트 사이즈 구하기  (0) 2017.01.10
[javascript] 웹 브라우저, 모바일 디바이스 구분하기  (0) 2016.11.04
카카오 SDK  (0) 2016.08.19
동영상 video tag  (0) 2016.08.19


클라이언트 에서 Form으로 submit(); 한 경우


스프링 컨트롤러에서 

@RequestParam

어노테이션을 사용하여 받으면 key, values 받아진다.


EX)


----CONTROLLER

@RequestMapping(value="/map", method = RequestMethod.POST)

public Response getMap(@RequestParam Map<String , Object> dataMap) {

Response res = new Response();

boolean result = false;

result = noticeService.insertMap(dataMap);

if(result) {

res.setData(result);

}

return res;

}




-----CLIENT

.

.

.

.

document.noticeCreateForm.submit();

return true;

}

Maven install 시 ERROR 





Window > Preferences > Java > Installed JREs > 

Add > Type 

 - Standard VM 

> JRE home

 - C:\Program Files\Java\jdk1.8.0_65 (자기 컴퓨터의 java jdk 경로)

Finish






Window > Preferences > Java > Installed JREs > 

Execution Environments 탭

JavaSE-1.8 > jdk1.8.0_65[perfect match] 선택



  • DispatcherServlet에도 transation 세팅을 해줘야한다.

( Application Context의 설정이 DispatcherServlet의 설정과 공유되는것이 아니기때문에 각각 해줘야함. )



try catch 문으로 되어있으면 exception이 catch문에서 printStackTrace로 잡히기 때문에

public class UserMapperDaoImpl implements UserMapperDao{

	private SqlSession sqlSession;
	//gettter and setter for sqlSession
	@Override
	public void saveUser(User user) {
		// TODO Auto-generated method stub
		try {	
			UserMapperDao userMapper=sqlSession.getMapper(UserMapperDao.clas s);
			userMapper.saveUser(user);
			if(user.getName().equalsIgnoreCase("abc")){
				throw new Exception("Simulate Error...");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

} catch(Exception e) {

e.printStackTrace();

thows new RuntimeException();

}


OR 


Try catch 문을 없애고 


public FourPillarsData getSajuFourPillars(FourPillarsInputData inputData) throws Exception{


이렇게 처리한다.




확인방법 


트랜잭션 처리가 되었으면,


DEBUG: org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@304648]


처리가 되지 않았으면,


DEBUG: org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
DEBUG: org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a51312] was not registered for synchronization because synchronization is not active



그리고 DefaultSqlSession 객체 주소가 각각의 프로세스 처리 Session 아이디와 같아야 된다


그래야만 롤백할때 한번에 날릴수있다.





참고


http://forum.spring.io/forum/spring-projects/data/125994-transaction-not-rolling-back-in-spring-mybatis-mysql

http://lunal.tistory.com/entry/spring-mybatis-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EC%84%A4%EC%A0%95

JSP submit 값 변경



EX) input 박스 id, name 값 startDt 변경시


<form>

.

.

.

<tr>

<th width=150 id="howdo-table-center">노출 시작</th>

<td><input type="text" name="startDt" id="startDt" size="30" >

<input type="hidden" id="adminId" name="adminId" value="${memberinfo.adminId }">

</td>

</tr>


.

.

</from>


var startDt = document.getElementById("startDt");

startDt.value = moment($("#startDt").val()).unix();

document.xxxform.submit();

'Programming > JSP' 카테고리의 다른 글

JSP에서 웹 애플리케이션의 절대 주소  (0) 2016.02.28

+ Recent posts