21 Ekim 2013 Pazartesi

android.os.NetworkOnMainThreadException Hatası

Merhabalar
  Bu hatanın nedeni;android işletim sisteminin arayüz ile webe erişimi ayırmasından kaynaklanmaktadır.Yani Aynı anda hem arayüzde hemde webde işlem yapamazsınız.Bu işlemleri farklı çalışma alanlarına bölmeniz gerekmektedir.
  Bu sorunun İki Çözümü mevcuttur.Birincisi her bir çalışma alanını threadlere bölmek ikincisini bir kaynakta gördüm ancak kesin  sonuç verdiğinden emin değilim.
Bu işlemin Örnek kodu şu şekildedir.

public class Anasayfa extends Activity {
private TextView textView;
private String CONTENTS_URL = "http://www.numan.com/api/rawcontents";
@Override
protected void onCreate(Bundle savedInstanceState) {
final Handler mHandler = new Handler();
super.onCreate(savedInstanceState);
setContentView(R.layout.anasayfa);

downloadList();

final Runnable mUpdateResults = new Runnable() {
public void run() {

AnimateandSlideShow();
}
};
AnimateandSlideShow();
}
private void downloadList() {
Runnable runnable = new Runnable() {

@Override
public void run() {
getContentList();
}
};
Thread thread = new Thread(runnable);
thread.start();
}
private void getContentList() {
try {
String json = HttpUtilities.get(CONTENTS_URL);
Log.i("Konu", "İndirildi " + json);
final List<Content> contentList = JsonManager
.parseGetContentJson(json);
Log.i("Konu", "Ayrıştırılan adet " + contentList.size());
Runnable action = new Runnable() {

@Override
public void run() {
for (Content c : contentList) {
willSHownText = willSHownText + "               "
+ c.getContentTitle();
}
textView.setText(willSHownText);
}
};
runOnUiThread(action);
} catch (Exception e) {
Log.e("Konu", "İndirme hatası" + e.getClass().getName()
+ " " + e.getMessage(), e);
}
}
}
Yukarıdaki örnekde olduğu gibi webden içerik almak isterseniz thread açıcaksınız.İçeriği aldıktan sonra arayuzde göstermek istioyrsanız tekrarthread açmak zorundasınız. android.os.NetworkOnMainThreadException Hatasının çözümü budur.

17 Eylül 2013 Salı

eclipse plugin upgrade hatası

Selamlar
     Eclipse android sdk tanıttık'tan sonra yeni bir proje yaratılırken; sdk yi upgrade etmemiz gerektiğini söyleyen bir hata ile karşılaştım ve çözümünü de sizinle paylaşmak istedim.Bu hata sdk yin son versiyonundan kaynaklanmaktadır.
Yapılacak işlem ise çok basittir.
Android sdk yı açın.Ve vereceğim dizine ulasın.|.......sdk\tools\templates\activities\BlankActivity\template.xml.Bu dosyada bazı su satırı comment edin" <dependency name="appcompat" version="v7" />"
Şimdi aynı comment işlemini başka bir dosya için yapacağız.|sdk\tools\templates\activities\MasterDetailFlow\template.xml.
" <dependency name="support" version="v4" />
    <dependency name="android-support-v4" revision="8" />"bu işlemide tamamladıktan sonra eğer başka bir sorun yoksa proje oluşturabiliriz.

25 Şubat 2013 Pazartesi

Java da writer

Writer da 
Su kod yazılırsa belirtilen dizinde istenilen dosyayı olusturur ve onun içine istenilen içerigi yazar Ancak klasor
açmaz ve eski verıyı aksı yapılmazsa eskı verıyı ezer.
Basit bir örnekle açıklayacak olursak.
String file="D:\\numan\\new.txt";
        FileWriter fw=new FileWriter(file);
        BufferedWriter bw=new BufferedWriter(fw);
        bw.write("java\r\n");
        bw.write("Java Enterprice \r\n");
        bw.write("Java Android \r\n");
        bw.close();
Şeklindedir.Ancak eski veriyi silmeden yapmak ıstersek 
FileWriter fw=new FileWriter(file,true)eklenır.
exceptionlu writer versiyonu şudur.
public static void main(String[] args) throws IOException {
        
        
        try{
            
            String file="D:\\numan\\new.txt";
            FileWriter fw=new FileWriter(file);
            BufferedWriter bw=new BufferedWriter(fw);
            bw.write("java\r\n");
            bw.write("Java Enterprice \r\n");
            bw.write("Java Android \r\n");
            bw.close();
            
            
            

        
    }catch(Exception e){
        System.out.println("Yanlıs Dosya Arama");
        e.printStackTrace();
    }
        

    şeklinde olmalıdır.Neden exception açıyoruz derseniz hata takibini sağlamak hatanın farklı platformlardan dönüşüm sağlayarak client tarafını bulmasını sağlar.Bunu da her dizinde exception isteyerek yapar.

Javada Stream , Encoding, Buffer


Stream
    Stream yavaş gelen akım demektir.Yavaş gelen veri demektir.Dil platformunda ise dosyaya yazma ve okuma olarak karşımıza çıkar.Stream yapısı ozellıkle yazıcılarda scannerlarda gecelıdır.Bilgisayar bilimlerinde bunun adı I/O dur Yani input output tur.Bunlar normalde byt larla çalısır.Ancak metin geldiği zaman  ıse bu byt kodların karaktere cevrılmesı gerekır.Bunada encoding denir.Gene byttır ancak karakter olarak gozukur.Ornek 15 sayıdır.1 ve 5 karakterdır.
    javada herşey unıcode dır.Encodıngler iso-8859-9 latin-5 dir.Java bunlarla ugrasmamak ıcın reader ve writer diye iki class olusturmustur.Türkçe makınada calısdıgında türkce olarak algılıyor herhangi başka bir dilede başka.İnput stream ve output stream byt olark
bu ıkı clası da olarak okur.
Buffer stok zula anlamına geliyor.Her okumada tekrar tekrar verı almayı engellemek ıcın kullanılır.input
ve output buffer vardır.
Javada I/O ınput output karısıkdır.java veri okumaya satır satır ızın verır.yanı kısaca once okuyayım sonrada vereyım seklınde bır ıslem yapmaya izin vermez.Bir satır oku kullanıcıya ver oku ver trafıgı seklınde
olustur demıstır.

17 Şubat 2013 Pazar

Jdbc Transaction

Javada Transaction

Javada transaction bir işlemi yapar iken veya kaydı database e atarken paralel veya bağımlı bağımlı olan ve ayrılmaması gereken yapılar için tasarlanmıştır.Kısaca bir db connection gerçekleşmeyen bağımlı bir connection dan ötürü durdurulur yada en doğrusu kontrol edilir.
Tranasction terimleri 3 tanedir
1.begin : İşlemi sorguyu default olarak başlatır.
2.commit : İşlemi işletir kullanılmak üzere hafızaya alır
3.rollback : Geri sarar

Transaction da commit kullanımı örneğini aşağıdaki örnekle açıklamaya çalışalım


  1.   public class transactionTest {

  2. public static void main(String[] args) throws ClassNotFoundException,
  3. SQLException {
  4. Class.forName("com.mysql.jdbc.Driver");

  5. Connection connection = DriverManager.getConnection(
  6. "jdbc:mysql://localhost:3306/my_db2", "root", "godoro");
  7. connection.setAutoCommit(false);
  8. String sql = "insert into  customer(customerName,totalDebit) values(?,?)";

  9. PreparedStatement statement = connection.prepareStatement(sql);
  10. statement.setString(1, "Adnan Oktar");
  11. statement.setDouble(2, 7200);
  12. statement.executeUpdate();
  13. burdakı versıyonda sql ı bozdugumuz szamna hıcbırını yazmaz a
  14. PreparedStatement statement1 = connection.prepareStatement(sql);
  15. statement1.setString(1, "Ahmet Mahmut Ünlü");
  16. statement1.setDouble(2, 3900);
  17. statement1.executeUpdate();
  18. PreparedStatement statement2 = connection.prepareStatement(sql);
  19. statement2.setString(1, "Fethullah Gülen");
  20. statement2.setDouble(2, 7800);
  21. statement2.executeUpdate();
  22. connection.commit();
  23. connection.close();

  24. }
  25. Bu ornekte gördüğünüz üzere 9.satırdaki kırmızı ıle işaretli kod bloğu ile connection hafızaya yazılmış yani işletilmiş 29.satıra gelince yani işlem hatasız tamamlanıncada database e set işlemi gerçekleştirilmiştir.
Bunun aksi  durumda ise denendiği zaman işlemi kesip attığını göreceksiniz.
Örnek
PreparedStatement statement1 = connection.prepareStatement(sql+blabla);
şeklinde hata vericek sonuclu bir kod blogu oldugunda işlemi tamamlamayıp yarım bıraktıgına şahit olabilirsiniz.
Bozulan veya hatalı bir kod bloğunun kullanımı bu şekildedir.Bu sıralı bağımlı işlemlerde tasarımcıların işine yarayabildiği gibi hata verene,okunana  kadar devam edilmesi istenen kod bloklarında da kod tasarımcılarının işine yrayabilir şöyleki;
Oluşturulan her işlem bloğundan sonra connection commit edilirse hata verene kadar uygulama çalıştırılabilir.
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "Adnan Oktar");
statement.setDouble(2, 7200);
statement.executeUpdate();
connection.commit();
şeklinde.


2 Şubat 2013 Cumartesi

Google Adwords Hizmeti nedir ve Hesap Lar Nasıl Oluşur


Google Dağınık bilgileri toplayıp derleyen bir arama motorudur.Kullanıcılar Google Mülkiyetleriniz ziyaret ederek aradıklarına ulaşırlar.Bir kullanıcı "Şansımı Denemek İstiyorum"u tıklarsa, kullanıcı doğrudan Google arama sonuçlarındaki ilk web sitesine veya belgeye gider.Bir firma google ın arma ağı hizmetlerinden olan fiziki arama ya para veya menfaati bir şey sunarak yer edinemez.Ancak sağ tarafda ve bazen üst te ççıkan adwords reklamlarında bunu yapabilir.
Google Bu işi profesyonel olarak yapmaktadır eşitlikci bir rekabet ortamı sağlayarak herkezin bütçesi dogrultusunda bir reklam rekabetine girmesine izin vermektedir.
GOOGLE ADWORDS HESAPLARI
Google bu işi yürütmek için bir adwords hesabı oluşturma ve bunu gerektiğinde müşteri ve müşteri yönetici hesabı olmak üzere iki kısıma ayırmıştır.müşteri hesabı şirketin veya tüzel kişinin hesabından oluşturlur ve burdan müşteri yönetici hesabına izin verilerek adwords hizmeti başkları tarafından sağlanmış olur.Müşteri hesabından gerektiğinde müşteri yönetici hesabını iptal edebilir ve bildirimleri alabilirsiniz.müşteriler gbi müşteri yöneticiside gerektiğinde hesaplar arsındaki bağlantıyı sonlandırabilir.
Not:Müşteri yöneticisi arayan firmalra google bu konuda da hizmet vermektedir

22 Ocak 2013 Salı

Javada enum nasıl kullanılır.Enum nedir.


Merhabalar
Bu yazımda java da enum nedir ve nasıl kullanılır.Ayrıca javadaki geçmişini anlatağım.
Java enum' u C deki gibi kabul etmez.Gereksiz görür.Enum un işlevini bunun için interface le halledilebileceğini
Düşünmüşlerdir.Ve java beşe gelene kadar java da enum kullanımı bu şekildedir.
Sebebi ise Enumlardaki değer ve İçeriklerin değişik olmasıdır.Örneğin Amerikada ki hafta başlangıcı pazardan
başlar.Atanan değerin 1 den pazar gününden başlatılmış olması türkiye için sorun ve problemdir.Bundan dolayı java enumu
belli bir süre kabul edilmemiştir.
Inteface li enum versiyon kullanım vbe yaratımı şu şekildedir.
 intarface days{
int MONDAY=0;
int Tuesday=1;
int WEDNESDAY=2;
               }
 
 public class DaysTest {
 public static void printDay(int day){

switch(day){

case 0:System.out.println("pazartesi");break;
case 1:System.out.println("Salı");break;
case 2:System.out.println("Çarşamba");break;
default : System.out.println("bilinmeyen gün");
}
 }

public static void main(String[] args) {

 int day=Days.TUESDAY;
 printDay(day);
 printDay(Days.MONDAYS);
 printDay(32);
}

 }
Bu kodu n console çıktısı ise şu şekildedir.
Salı
pazartesi
bilinmeyen gün


Şeklindedir.
Java 5 de  gelince ise javada enum kullanımı şu şekilde dir.
Bir enum oluşturulur.:
  enum Day{
  MONDAY,
  TUESDAY,
  WEDNESDAY;
  }
  Bir class oluşturulur.Ve içerik şu şekildedir.Her gün için bir case yaratılarak şartlandırılmış olur.Örnek


public class DayTest2 {

public static void printDay(Day day){
switch(day){
case MONDAY:System.out.println("Pazartesi");

}

}}






21 Ocak 2013 Pazartesi

Wrapper nedir nasıl kullanılır
Javada typler vardır.
ıkı grup da type vardır
1)primitive _____int short double vesaır bu alana gırer tek sey barındırır.
2)class_______ bunlar ıcınde bırcok sey barıdnırır.Methodlar primitive tipler bu alana girer.
Sorun bır tam sayıyı class olarak kullanmak ıstedıgımız veya  bu nun gıbı bırde strıngı ıntegere cevırecegı zaman
sorunları cozmek ıcın kullanılır.
        wrapperen ınstance olarak kullanımı
        int i=3;
        Integer w=new Integer(4);
        ıntegerı klasa cevırırken
        kutulama denıyor(Giydirme Bezeme manasında kullanılmış) boxing
        Integer wi=new Integer(i);
"wi."..... şeklinde kullanılır
        klası ıntegere cevırırken
        Kutusuzlama(Çıkartma soyma manasında kullanılmış)  umboxing

        Integer iw=wi.intValue();
       wrapperın strıng olarak kullanımı
        String s=Integer.toString(i);
       int' ı string e cevırmek ıcın
        int is=Integer.parseInt(s);
        su sekılde  nesne yaratımı yapılabılır ancak burda otomatık olarak java kendısı yapmaktadır.
       yanı nesneyı kendısı yaratmaktadır.her durumda nesne primitive tipe eşit deldir
       ılk ornekde primitive tip nesneye su soyle cevırılır
       1) otomatık kutulama
        Integer xw=i;
Arka planda compiler Integer wi=new Integer(i) bu işlemi gerçekleştirr
       2) olark nesne primitive tipe
        Otomatıc kutusuzlama
        Integer xi=w;
        Ancak bunlar otomatık olarak arkada java compiler
        1 sı nesne newlmeyı Integer w=new Integer(4);
      ıkıncısı ıse Integer iw=wi.intValue(); yi çagırır

20 Ocak 2013 Pazar


Javada static kullanımı(static neden atanır)
Merhabalar.
Öncelikle static javada static kullanımının nedenlerinden bir tanesi hafızadan kar sağlamak ve performans artırmak içindir.Javada object bir field için hafızada 4 bayt yer ayrılmaktadır.Static olarak tanımlanan fieldlar ise  değişmeyen her field için ortak olan değerlerde kullanılır.Her field ve methodda statc olmayan ortak static bir değişken atanabilir.Örnek verilecek olursa bir bankanın 3 milyon müşterisi vardır.Ancak o Bankanın her bir müşterisi için atanan faiz getirisi veya götürüsü aynıdır.İşte bu sekilde 3 milyon müşterinin faiz oranlarını kaydeden bellekde object field Tanımlamak yerine bir tane static tanımlanarak bu iş halledilmiş olur.Ve toplam da hafızada tutulan yer sadece 4 bayt tır.
Aynı örnek üzerinden gidilecek olursa static tanımlanan değişkenleri her object kullanabilir.Bir değişkenin değerinin değiştrilmesi ile iş yükünden de kurtulmuş olunur.Müşteri faiz oranı diye static bir değişken tanımlanır.Faiz oranı değişirse eğer ;static değer değiştirilerek iş bitirilmiş olur.
  Örnek: static double faizOran=12;
şeklindedir
 static değerler için Rectangle clasında x bir değer için kullanım Rectangle.x=4;şeklindedir.Kısaca bir Instance yaratmadan kullanılır.Instance ı dahada açarsak normalde
Rectangle r=new Rectangle();
r.x=3;  
şeklinde olan objec field kullanımı yerine static değer atanan field kullanımı yukarıda bahsettiğimiz şekildedir.
Ancak javada uzman lar için kullanımı sağlıklıdır.

19 Ocak 2013 Cumartesi

JSF Bean e parametre gonderme yontemleri en iyi yontem

JSF Bean e parametre gonderme yontemleri  en iyi yontem


<h:commandButton action="#{user.editAction}" >
    <f:setPropertyActionListener target="#{user.action}" value="delete" />
</h:commandButton>
Command button ile bean e bu deger gonderilir bean tarafında ise set get ile alınır .


@ManagedBean(nae="user")
@SessionScopedm

public class UserBean{
 
 public String action;
 
 public void setAction(String action) {
  this.action = action;
 }
 
 public String editAction() {
    //now action property contains "delete"
 } 
 
}

18 Ocak 2013 Cuma


PRIMEFACES FARKLI BİR VİEWA AJAXCALL YAPMAK

Primefacesda aynı view içinde ajax cagıracaksanız bunu dokumantasyondada yer alan asagıda sekilde yapabiliyorsunuz



    <h:panelGrid columns="2">
                        <p:commandButton value="PrimeFaces" actionListener="#{showcaseView.add}" update="txt txts" process="@form"/>
                        <h:commandButton value="JSF Impl" actionListener="#{showcaseView.add}">
                            <f:ajax render="txt txts" execute="@form"/>
                        </h:commandButton>
                    </h:panelGrid>

                    <p:dataList id="txts" var="text" value="#{showcaseView.texts}" type="inset">
                        <f:facet name="header">Values</f:facet>
                        #{text}
                    </p:dataList>




public void add() {
        texts.add(text);
        text = null;
    }





Yukarısı  Ayni viewda  ajax call yapmanın yontemidir . 

Fakat Aynı viewda aynı işlemi yapmak için su sekilde bir işlem yapmamız gerekmekte.Diğer viewin  içindeki form un idsi su sekilde verilmelidr

         

      <p:commandButton value="Ekle"
                    action="#{AddBean.add}"
                    update=":formB:txts" process="@all" />

hedef ise su sekilde olmalıdır


    <h:form id="formB">
                    <p:dataList id="txts" var="userShortInfo"  ....

beanda calısan metodda ise donus degeri hedefin içindeki bulundugu view olmalıdır

public String tiklaKonusYapanKullanicilar() {
        onlineTiklaKOnus= userService.getTiklaKonusYapanKullanicilar();    
        return "pm:digerViewinIdsi";
    }   





java.lang.ArrayIndexOutOfBoundsException: 1
 org.primefaces.mobile.util.MobileUtils.buildNavigation(MobileUtils.java:33) Hatası 



<f:facet name="left"><p:button value="Back" icon="back" href="#"/></f:facet>


seklinde bir hata yapmanızdan kaynaklaniyor  href in içi bos olmamassi gerekiyor oldugu viewin yada sayfanin adresini verebilirsiniz

Javada Uygulama Portu adresi bilgilerine request ile ulasma


Javada Uygulama Portu adresi bilgilerine request ile  ulasma

Javada
HttpServletRequest  kullanılacak objemiz
request nesnesini olusturdugumuzu varsayalım

request .getLocalAddr() -Server in ip adresini String olarak doner

request .getLocalName() -requestin yapildigi serverin ismi

request .getServerName() - requestin gonderildigi serverin ismi

request .getLocalPort() - serverin requesti kabul ettiği port

request .getServerPort() - requestin gonderildigi port

request .getContextPath() - Context path olarak tanımladıgımız kısım  orn godoro.com:8080/Dynamicapp/index.jsf

17 Ocak 2013 Perşembe

programcılara ...

Bu yazı şu kaynaktan alınmıştır.Yazı sahibi Önder teker dir.Geziniyorken rastladığım ve çok hoşuma giden bir yazı olduğu için paylaştım.Ayrıca şahsı incelemeye başladığımda java dili ve diğer dillerde uzman olduğunu farkettim dilerseniz balabilirsiniz.Önder Teker

Programcılara 10 Emir


Yazılım geliştirirken dikkat edilmesi gereken kurallar Hazreti Musa'nın 10 emirine benzer bir biçimde toparlanıyor ve geliştirici adaylarına sunuluyor. Emirler, Önder Teker'in uzun yıllara dayanan yazılım geliştirme ve programlama eğitimi deneyimine dayanıyor. Bu kurallara uymayanları böceklerle dolu bir yazılım cehennemi bekliyor.

PROGRAMCILARA ON EMİR



0. Gördüğünü doğru yaz, yazdığını doğru oku.

1. Büyük harf yerine küçük, küçük harf yerine büyük kullanma.

2. Tek adı parçalama, ayrı adları birleştirme.

3. Açtığın her öğeyi kapa, açmadığın hiç bir öğeyi kapama.

4. Kullandığın her öğeyi tanıt, tanıttığın her öğeyi yerinde kullan.

5. Kullandığın her değişkenin türünü belirt ve hep bu türe uygun kullan.

6. Değişken yerine tür, tür yerine değişken kullanma.

7. Değişken yerine değer, değer yerine değişken kullanma.

8. Parametre isteniyorsa ver, sonuç dönüyorsa al.

9. Yapmadığının çalışmasını, ilk yaptığının doğru çalışmasını bekleme.

Ck editör kullanımı

Ck editör kullanımı

ckeditör konuşlandırma

Merhaba arkadaşlar bu yazımda becerim mukabilinde java ile ck editör kurulumunu anlatmaya çalışacağım.Bu içeriği türkçe kaynaklarda bulamamakla beraber bulduğum diğer kaynaklarda ise eksik olduğunu farketmiş bulunmaktayım.Benim izlemiş olduğum yontem biraz farklı olsada nihayetinde işimizi görecektir.Oncelikle ckeditör download edin içerisinde bir jar dosyası ile birlikte klasör gelecektir.Klasörü wep pages in altına kopyalayın.jar dosyasını ıse librarry dizininin altına kopyalayın.Ekletiyi kullanmadan önce dikkat edilmesi gerekenler ise şunlar:
1:tomcatimiz 7.0 olmalıdır ck editör 'ün son versiyonları aksi durumlarda çalışmamaktadır.
2:web deki kaynakların genelinde jar dosyasını web inf in altına konuşlandırmamız gerektiği söylenmekte ancak ben bunu denedim olmadığı için library ye konuşlandırdım ve çalıştı.Kısaca bu notla birlikte karşılaştırma yapariseniz bir yanlışlık yoktur.

ckeditör Kullanım

Jsp file ın içerisinde öncelikle import umuzu yapmamız gerekmektedir:

<%@taglib uri="http://ckeditor.com" prefix="ckeditor" %>

bu kodu import etmemiz ilk aşama.(İşte tomcat version problemi burda çıkmaktadır burada java tomcat version problem veya hata alırsanız versiyonunuzu yükseltin)
Sıradaki işlemimiz ise kaynak sitelerinde belirtilmemiştir.Sayfa head tag i içerisinde

<script src="../ckeditor/ckeditor.js"></script>

tag ini kullanmamız gerekmekte.Ancak burdakı path i doğru yapmanız gerekmektedir"

../ckeditor/ckeditor.js

".

en son yapmamız gereken ıse eger form kullanmıs ısenız su sekılde yapmanız gerekır

<form action="ArticleInsert.jsp" method="post">
        <label for="textareaId"></label>
      <textarea class="br_problem" id="articleBodyTwoId" name="articleBodyTwo" cols="20" rows="10"></textarea><br />
        <input type="submit" name="gonder" value="İçeriği ekle"/><br />
    </form>

    <ckeditor:replace  replace="articleBodyTwoId" basePath="/ckeditor/" />

Bu şekilde ck editör çalıştırılabilir.Ancak kullandğım editörün genel bir problemi vardı kaynaklardan araştırmama rağmen bulamadım .kopyalanan içeriklerin her satırının sonuna <br>  ve <p> tagini eklemektedir.Kaynağın içine girip html kodalrının düzenlenmesine ihtiyaç duymaktadır.

9 Ocak 2013 Çarşamba


PRİMEFACES   Invalid byte 1 of 1-byte UTF-8 sequence. Hatası
<p:commandLink value="/user/OnlineUser.jsf">Evet</p:commandLink>
<p:commandLink  value="#littleThan">Hayır</p:commandLink>  

Kullanımından kaynaklanıyor .Deploy hatası gibi gozuksede deployment kısminda degil publish edilirken olusn hata filter kullanılırsa yada debugger farkedilebilir .Bu hata commandlink dısında ki taglardan dolayıda olusabilir 
  1. <p:commandLink id="ajax" update="panel,display" actionListener="#{pprBean.savePerson}" style="margin-right:20px;">  
  2.         <h:outputText value="Ajax Submit" />  
  3.     </p:commandLink>  
Seklinde olması gerekiyor . 


7 Ocak 2013 Pazartesi

Krakter problemi çözümleri

 Türkçe karakter problemi veya değişik karakterler sürekli karşımıza çıkmaktadır.Bir keresin de bu problemle bir hafta uğraşmışlığım vardır.Birincil öncelik DB mizin türkçe karakterlerle çalışıyor olmasıdır.
  Yani dbde şu iki seçenekten birisi seçili olmalıdır.Latin_5 ve utf8_turkish_ci seçili olmalıdır.Birkaç kaynakda da utf8_unicode_ci bu seçimin de problemi çözdüğünü söylemektedir.Ancak denemedim.
  Java için <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> head de bu kod,importta ise <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>bu kodu kullanmamız gerekmektedir.
 Kesin olarak çözeceğini düşündüğüm yöntem ise java kodu içerisinde şu kodlamanın yer alması database ile entegre adilmesi şartı ile request.setCharacterEncoding("UTF-8");
budur.requestten gelen her kodu utf-8 karakter grubuna atarak database düzgün şekilde göndermektedir.Normal de bu işleme de ihtiyacınız olmamyabilir. Ve sadece database inizi türkçe uyumlu hale getirerek bu problem ortadan kaldırılabilir.

 Gerek donanım ayarları gerekse derleyici ayarlarından kaynaklı çözülememiş problemlere en uygun çözüm requestten gelen her kodun pars edilmesidir.

Faydalanabileceğiniz kaynaklar: 
godoro