Spring MVC Reminder 2

After that we are ready to implement controllers:

@RequestMapping(value=”/view_epg.html”, method=RequestMethod.GET)
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {

ModelAndView view = new ModelAndView(“viewEPG”);
view.addObject(“epgList”,epgService.getAllEpgProgrammes(null));

return view;
}

We need to trigger a view object by GETting or POSTing something to a view object. When http://domainname/view_epg.html is triggered, this controller will interfere with the request.

Here, we will get HTTPservlet request, process them as usual and redirect the response by using ModelView object . View name does not make sense on its own. It tells something when Spring is configured with a correct ViewResolver.

<bean id=”viewResolver”>
<property name=”prefix”>
<value>/WEB-INF/jsp/</value>
</property>
<property name=”suffix”>
<value>.jsp</value>
</property>
</bean>

Spring does this:    prefix + view name + suffix.

So Spring will redirect the response to /WEB-INF/jsp/viewEPG.jsp page via this controller.

By the way, as you see, I added some objects to the view. This object is request scoped and can be populated via JSTL on JSP page.

Here how I iterate over the ArrayList I put:

<table>
<c:forEach items=”${epgList}” var=”epg”>
<tr>
<td id=”programId” name=”${epg.programmeId}” style=”visibility:none;”>${epg.programmeId}</td><td>${epg.programmeTitle}</td>    <td id=”programDescription”> ${epg.programmeDescription}</td><td> ${epg.programmeChannel.displayName}</td><td> ${epg.programmeStartDate}</td>
</tr>
</c:forEach>

</table>

You know JSTL. No need to explain it.

Bon appetite.

Spring MVC Reminder 1

Simply we have

JSP as view,

@Controller as controller,

Spring bean as model.

First thing we must keep on our mind is to separate usual servlet container and  Spring container. Any request coming to Spring container needs an “endpoint” configuration to be redirected. Beside, servlet container does not need this. You may redirect a request to a JSP page by configuring nothing.

So first of all, I am separating different containers on web.xml:

<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

With this configuration, I command Spring to interfere the request if and only if the URL ands with “.html”. If URL does not end with “.html”, Spring will not search for a configured controller and servlet container (possibly Tomcat or whatever the server you used) handle the request.

I will configure my Spring MVC controllers with annotations. The most important thing while configuring them is to put all the relevant controllers into a package and then make Spring search them.

<context:component-scan base-package=”com.paperify.controllers” />

Read this if you do now want to lose your hair: Do not forget to make Spring “annotation-driven”. Put this line to the very end of your application context xml:

<mvc:annotation-driven />

 

HTTP 406 error while returning JSON from Spring MVC project

This is becasue JSON marshaller is configured correctly or version conflict of Json mappers and Spring dependencies. Spring wants org.codehaus.Jackson 1.0.0 but not more.

Here is the thread:

http://forum.springsource.org/showthread.php?96826-java-lang-NoClassDefFoundError-org-codehaus-jackson-map-ObjectMapper

Actionscript URLLoader or HTTPService gets HTTP 406 error

Shame on you Adobe!

My Restful Client was working properly on Firefox but not on Chrome or IE. I had a very severe headache to fix this. At last I found the reason.

Firefox is somehow gentle to HTTP request headers. If you do something not proper it gently lets you send the request. But IE and Chrome so much serious about them. IE says “I am not joking on this header thing, give me the exact charset, exact content type and etc.”

My Restful Service’s implemantation had been done before. So I could not change the server code. I had to change the accept headers.

But wait. Flex did not let me do this. He said “you can not change the HTTP headers on a GET request and you can not change them if your method is POST but you do not send at least one parameter.”

What? What are you doing exactly? This costed my 5 days you idiot?!

If you want to change HTTP headers when requesting a URL, you MUST;

1- Set your method as POST,

2- Add at least one parameter even if you do not need.

(Here I will update with a code snippet.)

Bir fikri geliştirmeden önce

Mutlaka alınmış patentlere göz gezdirin. Sizi hem boşa kürek çekmekten alıkoyacak hem de çok müthiş fikirler bulmanızı sağlayacaktır. Bunlarda arama yapabilirsiniz:

 

http://ep.espacenet.com

http://www.wipo.int/pctdb/en/

http://www.uspto.gov/patft/index.html

http://www.tpe.gov.tr

Flex display:none equivalent

On CSS, we can simply hide a DOM element by setting display style to “none”.

For Flex 4, a UIComponenet can be hide by setting its two property.

 

includeInLayout = false;

visible = false;

Tank yürüttünüz lan kalbime, sevdama balans ayarı çektiniz. Demokrasim uf oldu.

Havsalam yetmedi; Hıncal Uluç kadar arsız, Yılmaz Özdil kadar boş, Fatih Altaylı kadar dönek, Rasim Ozan Kütahyalı gibi haddini bilmez olduğuma inandırdınız beni.

Uf oldu demokrasim, öyle dediler yani; bir de evimde kimyasal silah varmış. Evet var, küp şekeri tam bir silah kıvraklığıyla kullanabiliyorum. Konya yöresinin bir savunma sanatı bu.

Daldınız bu yüzden topraklarıma, “naber lan topraam” diyemeden oldum toprağımdan, sergenimden.

Üzdünüz lan beni. Kocaman bir sevgi büyütmüştüm oysa ki içimde. Sonra sıçtım geçti. Sonra bi arı kondu üstüne. Belki de o sendin. Sonuçta eşkıya da sen ben gibi insandır.

Annem bir melek gibi  uçacak sandım, o bir kuş gibi yere çakıldı.

Biliyor musun, yemyeşil çimenler sandığım her yer aslında öylemesine çakıldı, taştı, barniydi, molozdu, taştı.

Emma ben hiç ses etmedim. O korkulu gözlerimin ardından sesim çıktığınca anırdım. Ses kısıkmış. Yine de bütün hayallerimin altı yandı, dibi tuttu. Öyle yedim, başka bir şey yoktu yeyecek.

Yeyecek dedim de, Özdemir Asaf’a köylü diyorlarmış ya en çok o gücüme giderdi. Yok be, ona köylü denmesine değil; köylü diye bir sıfat olmasına… Sonuçta altın çamura düşmekle üf olmaz. Daha iyi, ilgi çekmez, bekler öylece. Bulduk onu, öptük, alnımıza koyup yukarı bir yere kaldırdık ve eminim hala oradan bi yerlerden bizi izliyor.

Şey düşünüyorum, yüce yaradanım bizi izlemekten sıkılıyodur bence bazen. Hani prime time olaylar var, iki savaş falan emma onun dışında gayet sıkıcıyız lan. İnsanın bi yarısı onu inkar ediyor, bir yarısı varlığına inandırmak için neler neler ediyor. Hani bir bölüm izlersin, iki bölüm izlersin de bayar yani bi yerden sonra. İlgi çekmesi için atraksiyon lazım aga.

Bence en saf ama malca ilgi çekme yöntemi şu ergenlerin yaptığıdır. Hani otobüste sarışın ama kimseye yüz vermeyen şirin kız hafif öne oturur bizim dallamalar da otobüsün arkasına konuşlanırlar ya. Ha sonra kız duysun diye bağıra bağıra espirtiler yaparlar böyle gülmeli, anırmalı. Sonra önden bi amca bağırır “susun lan silikon tıfıllar, başımız şişti”; ha işte ben hep o amca olmak istemişimdir. Susun lan kafam şişti diye bağırmak… Şişti lan; sizin sesinizi bastırmak için konuşurken kendi sesimden başım şişti. Öndeki sarışın kız da evlendi çoluğa karıştı. İbneler, kaç kere dedim yanına gideyim adam gibi konuşayım dedim, “yok la bebe, böyle yap, sever kızlar” dediniz. Mallar. Hepinizi şimdi feysbukta yeni eklediği kıza “ya sen bu kadar güzel miydin” diye fotoğraf altı yorumlar yaparken görüzlüyorum.

Şimdi benim yaşım kaç? 25. Bugün günlerden ne? Pazartesi… Yani? Ne yani? Yok bişi.

Dağılın.

Why my composite component adds an internal component twice?

Once, I tried to add a component into my composite component by overriding its createChildren method.

I have added it successfully but wait, sometimes, it added this component twice.

This was remarkably surprising. Then I investigated this issue and figured that out:

Internal component might be added by the super class before createChildren method of your subclass. So we have two options to prevent this weird behavior:

1- Be sure that you call super.createChildren() in the very end of subclasses overridden createChildren method:

override protected function createChildren():void{

var objectList:DropDownList = new DropDownList();
addChild(objectList);
super.createChildren();
}

2 – Null check the component you wanna add after defining it as a class property:

protected var objectList:DropDownList = new DropDownList();

override protected function createChildren():void{

if(!objectList){
addChild(objectList);
}

super.createChildren();
}

 

Çirkin

Çirkindi.

Allah’ın belası güzellik sınırının 120 promil altındaydı.

Gözlerinin sana nasıl baktığını başkasına anlatırken utanacağın kadar…

Onu tanımıyordu. Yalnızca, gözlerindeki sinmişliğin, ürkek kırpınışların beyazımsı kahverengi aleviydi ne kadar da tükendiğini gösteren.

Hala çirkindi.

Ondan hoşlandığını söylediği ilk kişinin nasıl da  kahkahalar atarak tükürükler saçacağını bilebileceğin kadar.

Kumsaldaydılar. Karanlıktı. Karanlıkta bedenler susar. Gözler avazı çıktığı kadar parlar ışıl ışıl. Sesi çatallıdır gözlerinin, titrer. Karanlık, gözlerinin “doğruyu söyleyen” ayıbını örtemez. Bütün utançları sarmalar ama.

Çirkin bir kadının gözlerine bakarken utanmasına gerek kalmayacak kadar karanlık olmalıydı her yer.  Ama ay,  kendince mutlu etmek istiyordu belki de güneşi özleyenleri. Hayır, yaptığı oyunbozanlıktı. Gerçekten de ışık değildi, güneş değildi insanların istedikleri. Hani tam uykuya dalacakken aklına bir pişmanlığın gelir, uykunu kaçırır; sonra mücadele edersin, kendini affedersin, tekrar uykuya dalmaya çalışırsın, tam da o anda daha kuvvetli bir yumrukla geri döner pişmanlığın, yataktan fırlarsın. İşte buydu ayın yaptığı. Belalı, komik olmayan espriler yapıp neşe saçtığını düşünen tipler vardır ya; işte öyle rahatsız ediciydi.

Dakikalar tedirginlikle geçti; bulutun birisi elinin tersiyle kapattı ayın üstüne… Oh, yeterince karanlıktı; utançlar yok olabilirdi artık.

Kadın, yapabileceği en büyük yanlışı yaptı. Çantasından bir mum çıkardı. Yaktı. Yüzü aydınlandı. Ortalık aydınlandı. Erkeği bir pişmanlık kapladı. Çirkin bir kadın vardı yanında. Göreceklerdi onu. Ne hissettiği önemli değildi. Bir insanın bütün korkularını emip onu huzura kavuşturmanın mutluluğunu yaşayamadan, gözlerindeki ışıltının, “seni asla unutmayacağım, beni bırakacağından adım gibi emin olsam da” diyen narin sesindeki tedirginliğe aldırmadan, acımadan sıyırdı elini kadının ellerinden. ( Sanki ona hiç yapılmamıştı bu, acısını bilmiyordu.)

Hafif bir meltem esti. Belki de kadının kaderinin güçsüz bir iç çekişiydi bu. Bu güçsüz “nefes” bile mumu söndürmeye yetti. Kadın, çaresiz başını önüne eğdi. Tekrar çakmağını eline aldı, mumu yakmaya davrandı. Olmadı. Adam, kadının küçümen elleriyle beraber kavradı çakmağı. Hafif bir acımayla, iki parmağını el ayasında gezdirdikten sonra… Tam o sırada yan taraftan bir havai fişek atıldı ve gökyüzü aydınlandı. Burada adetti bu. Herkes birbiri için istek havai fişek arttırırdı. Yani öyle kaderin oyunu, tanrının mesajı falan değildi. Burayı kısa geçiyorum o yüzden.

Mumu yaktı. Kadının avuçlarını eline aldı. Mumun etrafına gerdiler dört eli. İkisi görece büyük, duygusuz; ikisi küçük, heyecandan titrek, sıcacık. Olmadı. Yine aynı ufak meltem, yine cılız ateş. Bu sefer ikisi de üzüldü. Gözyaşı yoktu. Aynı kişiydiler. Biri öncelerde çokça yaşamıştı bu duyguyu, diğeri halihazırda yaşıyordu. Hangi duyguyu mu? Anlayamadın mı? Adam, kadının yaşadıklarını tam olarak biliyordu. Ve şimdi, geçmişte karşısındakilerin yaşadıklarını yaşıyordu. Artık kadınla bir bütündü. Kadın, onun geçmişiydi. Geleceği olamayacak kadar geçmişte kalmalıydı. Kadın, adamın ta kendisi olmuştu. Artık ondan kaçamayacaktı, biliyordu. İnsan kendinden kaçamazdı. Belki uykusunda…

Derin bir uyku kapladı bedenini. Rüyalarından korktu, uyumamalıydı. Gözleri ağırlaştı. Kapandı. Kadın, boylu boyunca yanına uzandı. Kapalı gözlerini huzur işareti sandı. Değildi. Adamın göğsüne yasladı kafasını. Adamın göğsündeki o anlatılmaz boşluk dolmuştu sanki. Cuk oturmuştu.

Anlatmaya kalktı adam yaşadığı duygu karmaşasını. Karşılık olarak sadece “çirkin lan o kız” cevabını aldı.

Tek bir sıfatı vardı o kadının. Ne kadar sıcak olsa da, ne kadar sevse de, ne kadar sadık olsa da, ne kadar CESUR olsa da tek bir sıfat.

ÇİRKİN.

Ey insan, bu senin çirkinliğin. Çirkin, senin için sadece çirkin. Güzelliğin o mum gibi; kimle yakmaya çalışırsan çalış, hilkatının zayıf nefesi bile o cılız, aciz alevini söndürecek güzelliğinin.

Anlamayacaksın. Anlayamazsın.

Create Dynamic Menu with ActionScript 3.0 and Flex Reflection

I dealt with a completely dynamic menu lately. This menu;

1- Takes all items

2- Takes all display names

3- Takes all functions that will be triggered from the server side and

4- Executes the related functions by Reflection.

Server side returns me an XML like this:

And I am meeting this XML with an ActionScript object structured such as:

I first created a menu bar with a click handler function called “create”:

“create” function calls the remote object that returns me an XML I showed before. And set the stageX, stageY variables that will be used to position the menu.

I inserted all menu item contents to an Array Collection and assign to the menu as an Data Provider. On every menu item object in which is provided in Array Collection is labeled with the label property of the items. After filling the menu, I bound a click listener to the menu. This listener will execute a method by reflection (I mean the name of it.)

This reflection function is below: Here, MethodInvoker is a class to execute a function by its name and provided with “as3commons-reflect.swc”.  Here, “target” is the class that includes the desired function, “method” is the name of the method and it has the same name as the label of the menu item. Here, if we click the addUser item in the menu it will create a MenuEvent handled by “menuSelect” function.  It executes the “addUser” function by reflection.

That’s all. We can use this component to provide different menus to users with different credentials.

Bon appettite.

Takip Et

Get every new post delivered to your Inbox.