2016-06-17 5 views
0

내 코드에서 사이트 로고를 변경하고 싶습니다. 사용자가 이미지를 선택하고 이미지를 저장하면 저장됩니다. 사이트 로고는 즉시 변경되지 않으며 항상 복제되지는 않습니다. ..sometime업데이트 후 사이트 로고가 즉시 바뀌지 않습니다.

가 내 양식에서 사이트 로고를 설정하기위한 코드를 부착하고

,

File adminCompanyLogoPicFile = uploadRequest.getFile("admin_company_logo"); 
     imageUploadReq(userObj,adminCompanyLogoPicFile,actionRequest); 


public static void imageUploadReq(User userObj, File fileType,ActionRequest actionRequest) throws IOException, PortalException, SystemException{ 
     byte[] bytes = FileUtil.getBytes(fileType); 
     ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); 
     if (Validator.isNotNull(userObj) && fileType != null && Validator.isNotNull(bytes) && bytes.length != 0) { 
       if(siteLogoUpload){ 
        LayoutSetLocalServiceUtil.updateLogo(themeDisplay.getScopeGroupId(), true, true, bytes); 
       }else{ 
        UserLocalServiceUtil.updatePortrait(userObj.getUserId(), bytes); 
       } 
     } 
    } 
+0

맞춤식 테마를 사용하셨습니까? –

+0

@DanieleBaggio ... 예, 테마에서 로고 값을 설정하기 위해 $ site_logo를 설정했습니다 .. –

답변

1

캐시의 여러 레이어가 있습니다 .. 내가 사이트 로고 변경을위한 페이지를 새로 고침해야하고 때로는 immidiately 변경 Liferay는 내부적으로 ehcache를 사용하여 일부 객체를 메모리에 유지합니다. API를 통해 업데이트 할 때 여기가 관련성이 있는지는 잘 모르겠지만 로고는 페이지별로 캐시 될 수도 있습니다. 로고를 업데이트 한 다음 서버를 마지막으로 다시 시작한 이후로 결코 표시되지 않은 (따라서 캐싱 된) 페이지로 이동하면 시도해 볼 수 있습니다.

또한 로고에는 HTTP 레벨 캐시 정보가있을 수 있습니다. 일반적으로 사이트 로고는 자주 변경되지 않으므로 잠시 동안 캐시하도록 브라우저에 지시하는 것이 좋습니다. DOM을 검사하고 로고를 표시하고 브라우저에서 다시로드 (또는 Shift-Reload)하거나 페이지를 새로 고치기 전에 브라우저 캐시를 지움으로써이를 테스트 할 수 있습니다.

+0

하지만 로고가 표시되면 로고가 표시됩니다 ... 캐시를 수동으로 지우지 않아도됩니다. 캐쉬에 저장되어 있으면 페이지를 새로 고치지 않아도됩니다 ... 그리고 캐싱 문제가 있다면 코딩을 통해 문제를 해결할 수 있습니다. 코드 스 니펫을주세요. –

+0

이제 어떻게해야할까요? 다시 질문 : 귀하의 질문에 그것은 로고가 업데이 트되지 않은 것 같습니다 - 귀하의 의견에 그것은 업데이 트됩니다. 진행하고있는 시퀀스, 기대치 및 실제 관찰을 재현하기위한 단계를 제공하십시오 (질문 편집이 바람직 함). –